2

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

4

4 回答 4

6

也许你应该使用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}
于 2012-11-15T09:18:27.003 回答
2

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

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

然后,您可以用作:

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']
于 2012-11-15T09:49:17.587 回答
0

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

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

mylist.append(some_var) #add a variable to list
于 2012-11-15T09:14:30.447 回答
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
于 2012-11-15T23:02:19.667 回答