Как назначить каждый элемент списка отдельной переменной?

если у меня есть список, скажите:

ll = ['xx','yy','zz']

и я хочу назначить каждый элемент этого списка отдельной переменной:

var1 = xx
var2 = yy
var3 = zz

не зная, какой длины список, как бы я это сделал? Я пытался:

max = len(ll)
count = 0
for ii in ll:
    varcount = ii
    count += 1
    if count == max:
        break

Я знаю, что varcount не является допустимым способом создания динамической переменной, но я пытаюсь создать var0, var1, var2, var3 т.д. В зависимости от количества.

Редактировать ::

Неважно, я должен начать новый вопрос.

Ответы

Ответ 1

вообще говоря, не рекомендуется использовать такой вид программирования для большого количества элементов/переменных списка.

Однако следующее утверждение работает нормально и, как ожидалось

a,b,c = [1,2,3]

Это называется "деструктуризация".

он может сэкономить вам некоторые строки кода в некоторых случаях, например, у меня есть a, b, c как целые числа и вы хотите, чтобы их строковые значения были как sa, sb, sc:

sa, sb,sc = [str(e) for e in [a,b,c]]

или, еще лучше

sa, sb,sc = map(str, (a,b,c) )

Ответ 2

Неплохая идея сделать это; что вы будете делать с переменными после их определения?

Но предположим, что у вас есть веская причина, вот как это сделать в python:

for n, val in enumerate(ll):
    globals()["var%d"%n] = val

print var2  # etc.

Здесь globals() - это локальное пространство имен, представленное как словарь. Нумерация начинается с нуля, как и индексы массива, но вы можете указать enumerate() чтобы начать с 1 вместо.

Но опять же: маловероятно, что это действительно полезно для вас.

Ответ 3

Вы должны вернуться и переосмыслить, почему вам нужны динамические переменные. Скорее всего, вы можете создать ту же функциональность с циклом в списке или разрезать его на куски.

Ответ 4

Если количество элементов не изменяется, вы можете преобразовать список в строку и разделить на переменные.

wedges = ["Panther", "Ali", 0, 360]
a,b,c,d = str(wedges).split()
print a,b,c,d

Ответ 5

Вместо этого сделайте следующее:

>>> var = ['xx','yy','zz']
>>> var[0]
'xx'
>>> var[1]
'yy'
>>> var[2]
'zz'

Ответ 6

Я предполагаю, что вы получаете список с помощью SQL-запроса - почему вы не можете зафиксировать длину. С этим мне кажется очевидным, что вы хотите использовать эти значения и выполнять дополнительные команды SQL, используя каждое значение из этого недавно приобретенного списка отдельно. Это не выход из концепции, если вы берете ее с точки зрения SQL, и, если я прав, я дам синтаксис. Однако вам не нужно будет создавать отдельные имена переменных с этим решением и не потерять универсальность, над которой вы работаете. ЕСЛИ Я НЕПРАВИЛЬНО ПРОИЗВЕДАЮ, ЧТОБЫ БЫТЬ ВАШИМ ВРЕМЕНИ

Ответ 7

Я нашел достойное приложение для этого. У меня есть куча CSV файлов, которые я хочу сохранить в виде фрейма данных под своим именем:

all_files = glob.glob(path + "/*.csv")
name_list = []
for f in all_files:
    name_list.append(f[9:-4])
for i,n in enumerate(name_list):
    globals()[n] = pd.read_csv(all_files[i])

Ответ 8

Может быть использовать словари, чтобы добавить больше контента