gpt4 book ai didi

python - 如何迭代创建新变量来存储列表的第 i 个值

转载 作者:行者123 更新时间:2023-11-30 23:36:00 26 4
gpt4 key购买 nike

我想编写一个采用 L 的函数,即元组列表(例如 L = [(1,0,0), (1,1,0) ]),并循环通过 L 为第 i 创建一个新变量 t{0}.format(i) L 中的条目。因此,理想情况下,在 for 循环结束时,t1 = (1,0,0), t2 = (1,1,0)。然后我将把元组转换成列表,但我用谷歌搜索并发现我可以这样做t1 = list(t1)。我怎样才能完成第一部分?

最佳答案

好吧,你可以像这样创建全局变量:

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)

但实际上,动态命名变量有什么好处呢?它们很难编程,因为直到运行时你才知道它们的名字。 (您可能会(正确或错误地)猜测有 t1,但是有 t10 吗?)

使用字典要好得多:

def make_vars2(L):
return dict(enumerate(L, start=1))

t = make_vars2(L)
print(t[1])
# (1, 0, 0)

使用dict,您的所有“变量”都捆绑在t中,并且您确切地知道t中的“变量”, t.keys(),并且它们不会污染您的全局命名空间。

但是,再想一想,你真的需要一个 dict 吗? L 本身还不够吗?使用 L[i] 访问 L 中的项目比使用 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

关于python - 如何迭代创建新变量来存储列表的第 i 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com