2012-11-15 53 views
2

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

+1

你应该阅读蟒蛇教程:http://docs.python.org/2/tutorial/index.html 在Python有没有必要知道为了元素添加到列表的长度它 –

+2

如果你不知道有多少变量,你会如何处理这些变量? – ecatmur

回答

5

也许你shoulde使用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} 
0

您可以创建一个空列表并为其添加任意数量的元素,而不必担心其大小。

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

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

如果你要问实际上是 - 我想有0-n个元素的列表,但我只打算知道元素的值5,20和67以及其他所有元素都应该是默认值,那么可以使用带整数键的dict作为稀疏列表。

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

然后,你可以使用如:

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

如果你想兑现该字典到列表中,那么你可以使用列表-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'] 
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 
相关问题