Python:将List的每个元素分配给单独的Variable

Dav*_*ang 18 python variables list

如果我有一个清单,请说:

ll = ['xx','yy','zz']
Run Code Online (Sandbox Code Playgroud)

我想将此列表的每个元素分配给一个单独的变量:

var1 = xx
var2 = yy
var3 = zz
Run Code Online (Sandbox Code Playgroud)

不知道列表有多长,我该怎么做?我试过了:

max = len(ll)
count = 0
for ii in ll:
    varcount = ii
    count += 1
    if count == max:
        break
Run Code Online (Sandbox Code Playgroud)

我知道varcount不是创建动态变量的有效方法,但我要做的是根据计数创建var0,var1,var2,var3等.

谢谢!

编辑:

我应该开始一个新问题.谢谢你的帮助!

cma*_*tas 29

一般来说,不建议对大量列表元素/变量使用这种编程.

但是,以下声明可以正常工作并且符合预期

a,b,c = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

这被称为"解构".

在某些情况下它可以节省一些代码行,例如我有一个,b,c作为整数,并希望它们的字符串值为sa,sb,sc:

sa, sb,sc = [str(e) for e in [a,b,c]]
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好

sa, sb,sc = map(str, (a,b,c) )
Run Code Online (Sandbox Code Playgroud)

  • 这是Python的一个很棒的功能(又名“元组解包”),并且在像@JHixson描述的“问题,解决方案= ...”情况这样的情况下通常很有用......但它与OP规定的条件不匹配_不知道列表有多长._ (2认同)

ale*_*xis 22

这样做并不是一个好主意; 在定义变量后,您将如何处理变量?

但假设你有充分的理由,这里是如何在python中做到这一点:

for n, val in enumerate(ll):
    globals()["var%d"%n] = val

print var2  # etc.
Run Code Online (Sandbox Code Playgroud)

这里,globals()本地名称空间是作为字典呈现的.编号从零开始,就像数组索引一样,但你可以告诉enumerate()从1开始.

但同样:这不太可能对你有用.

  • 我被低估了,因为我实际回答了这个问题?来吧! (6认同)

Dar*_*ehe 9

您应该回过头来重新思考为什么"需要"动态变量.有可能,您可以通过循环列表或将其切成块来创建相同的功能.

  • +1 - 有时,最好的答案是不回答,而是说"这不好". (4认同)