Как назначить каждый элемент списка отдельной переменной?
если у меня есть список, скажите:
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
Может быть использовать словари, чтобы добавить больше контента