在不知道列表大小的情况下将列表元素分配给变量?

时间:2012-11-15 09:12:25

标签: python

新手在这里。
假设您想要在不事先知道列表大小的情况下将列表元素分配给变量,您是如何做到的,特别是在Python中?
例如。 list有5个元素,程序创建5个变量(var1,var2,var3,var4,var5)并为其分配元素。

4 个答案:

答案 0 :(得分:5)

也许你应该使用dict

>>> lst = [0, 1, 2, 3, 4]
>>> d = {}
>>> for i, item in enumerate(lst):
...     d['var' + str(i)] = item
... 
>>> d
{'var4': 4, 'var1': 1, 'var0': 0, 'var3': 3, 'var2': 2}

答案 1 :(得分:2)

如果您要求的内容生效 - 我想要一个0-n元素的列表,但我只想知道元素的值,5,20和67,以及其他一切都应该是默认值,那么你可以使用带有整数键的dict作为稀疏列表。

d = {}
d[5] = 34.7
d[20] = 68.1
d[67] = 9.13

然后,您可以使用as:

d.get(5, 'default')
# 34.7
d.get(6, 'default')
# default

如果您希望该词典具体化为列表,那么您可以使用list-comp:

mylist = [d.get(i, 'default') for i in range(max(d))]
print len(mylist), mylist[:10]
# 67 ['default', 'default', 'default', 'default', 'default', 34.700000000000003, 'default', 'default', 'default', 'default']

答案 2 :(得分:0)

您只需创建一个空列表并向其添加任意数量的元素,而无需担心大小。

mylist = [] #empty list, list is not constrained to be any particular size

mylist.append(some_var) #add a variable to list

答案 3 :(得分:0)

我的回答建立在black_dragon的回答之上。我处理列表的方法是他的答案。

由于您希望根据列表中的值创建变量,因此可以使用globals()(用于获取全局符号表的内置函数)来更新全局字典。更新全局符号字典将创建或修改变量。

l = [10, 20, 30]

d = {}
for i,v in enumerate(l):
    d ['var'+str(i)] = v

globals().update(d)

print var0
print var1
print var2