我想编写一个函数,它接受一个L
元组列表(一个例子可能是L = [(1,0,0), (1,1,0)]
),然后循环通过L
为. 所以理想情况下,在这个 for 循环结束时,. 然后我将把元组变成列表,但我搜索了一下,发现我可以做到。我怎样才能完成第一部分呢?t{0}.format(i)
i
L
t1 = (1,0,0), t2 = (1,1,0)
t1 = list(t1)
问问题
322 次
1 回答
3
好吧,你可以像这样制作全局变量:
L = [(1,0,0), (1,1,0)]
def make_vars(L):
for i, item in enumerate(L, start=1):
globals()['t{0}'.format(i)] = item
make_vars(L)
print(t1)
# (1, 0, 0)
但实际上,动态命名变量有什么用?它们很难编程,因为直到运行时你才知道它们的名字。(您可能(正确或错误地)猜测有 a t1
,但有 at10
吗?)
使用字典要好得多:
def make_vars2(L):
return dict(enumerate(L, start=1))
t = make_vars2(L)
print(t[1])
# (1, 0, 0)
使用 adict
您所有的“变量”都捆绑在, 中t
,并且您确切知道 , 中的“变量”是什么t
,t.keys()
并且它们不会污染您的全局命名空间。
但是,再想一想,你真的需要一个dict
吗?L
自己还不够吗?访问 L
withL[i]
中的项目比使用 访问相同的项目更快t[i+1]
:
In [3]: %timeit t[1]
10000000 loops, best of 3: 66.1 ns per loop
In [4]: %timeit L[0]
10000000 loops, best of 3: 42.8 ns per loop
于 2013-05-31T14:45:39.700 回答