Как обмениваться списками в виде списков, а не в виде кортежей между различными функциями? - PullRequest
0 голосов
/ 18 октября 2018

Я хочу поделиться списками между различными функциями, такими как:

def function1():
    testlist = ['1','2','3']
    testlist.append = ('4')
    print(testlist)
    return testlist 

def function2():
    testlist = function1()
    print(testlist)
    testlist.append('6')

Проблема в том, что как только я хочу отредактировать список, например, с помощью list.append, сообщение об ошибке 'tuple'Объект не имеет атрибута «добавить».Несмотря на то, что список тестов по-прежнему имеет правильный ввод в function2.Вот почему я не знаю, почему список правильно передается между двумя функциями, но как кортеж, а не список.Есть ли способ изменить переменную обратно в список или передать ее в виде списка?

Я уже знаю, что могу легче проходить списки в классах.Но класс будет слишком большим для приложения, которое я хочу запрограммировать.Я уже видел этот Вопрос , где обсуждается аналогичная проблема.Но с этими решениями я все еще не могу редактировать список в другой функции.
Спасибо за вашу помощь.

Чтобы прояснить проблему: Код:

Код:
`

def function1():
    cfg = yaml.load(yamlfile)
    testlist = []
    list2 = []
    for x in cfg['y']
        list2.append([x, str(cfg['y'][x]['z']), cfg['g']['d'] + '\\'])
        for c in cfg['y'][x]['z']:
            if cfg['x'][y]['z'][c]['abc']:
                list2.append([str(cfg['y'][x]['z'][c]['abs'])])
    return testlist, list2
def function2():
    testlist = function1()
    list2 = function1()
    for i in range(len(list2)):
    testlist.append(list2[i][0])`

Надеюсь, я знаю, что это немного яснее, чем я хочуделать.Кстати, я просто использовал случайные имена в файле конфигурации.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Габриэль прав.

Будьте осторожны и со второй функцией.Я думаю, что вы хотите добавить '6', а не ['6'].

testlist.append('6')
0 голосов
/ 18 октября 2018

У вас есть семантическая ошибка:

testlist.append = (['4'])

Неправильно: если вы хотите добавить только '4', вы должны использовать:

testlist.append('4')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...