如果我有一个清单,请说:
ll = ['xx','yy','zz']
我希望将此列表的每个元素分配给一个单独的变量:
var1 = xx
var2 = yy
var3 = zz
不知道列表有多长,我该怎么做?我试过了:
max = len(ll)
count = 0
for ii in ll:
varcount = ii
count += 1
if count == max:
break
我知道varcount不是创建动态变量的有效方法,但我要做的是创建var0
,var1
,var2
,{{1}根据计数是什么等。
修改:
没关系,我应该开始一个新问题。
答案 0 :(得分:21)
一般来说, 建议对大量列表元素/变量使用这种编程。
但是,以下声明正常并且符合预期
a,b,c = [1,2,3]
这称为“解构”。
在某些情况下,它可以为您节省一些代码,例如:我有一个,b,c作为整数,并希望他们的字符串值为sa,sb,sc:
sa, sb,sc = [str(e) for e in [a,b,c]]
或者,甚至更好
sa, sb,sc = map(str, (a,b,c) )
答案 1 :(得分:17)
这样做并不是一个好主意;在定义变量后你会对变量做什么?
但是假设你有充分的理由,这里是如何在python中实现的:
for n, val in enumerate(ll):
globals()["var%d"%n] = val
print var2 # etc.
这里,globals()
是作为字典呈现的本地命名空间。编号从零开始,就像数组索引一样,但你可以告诉enumerate()
从1开始。
但是再次说明:这对你来说实际上并不大可能。
答案 2 :(得分:9)
您应该回过头来重新思考为什么“需要”动态变量。有可能,您可以通过循环遍历列表或将其切成块来创建相同的功能。
答案 3 :(得分:2)
如果项目数量没有变化,您可以将列表转换为字符串并将其拆分为变量。
wedges = ["Panther", "Ali", 0, 360]
a,b,c,d = str(wedges).split()
print a,b,c,d
答案 4 :(得分:0)
相反,这样做:
>>> var = ['xx','yy','zz']
>>> var[0]
'xx'
>>> var[1]
'yy'
>>> var[2]
'zz'
答案 5 :(得分:0)
我假设您通过SQL查询获取列表 - 为什么您不能提交长度。有了这一点,我很明显你希望获取这些值并分别使用新获取的列表中的每个值执行其他SQL命令。如果你从SQL的角度来看,这不是一个概念,如果我是正确的,我将提供语法。但是,您不需要使用此解决方案创建单独的变量名称,也不会失去您正在努力的多功能性。如果我因为浪费你的时间而感到非常抱歉
答案 6 :(得分:0)
我找到了一个不错的应用程序。我有一堆csv文件,我想将它们另存为数据框:
all_files = glob.glob(path + "/*.csv")
name_list = []
for f in all_files:
name_list.append(f[9:-4])
for i,n in enumerate(name_list):
globals()[n] = pd.read_csv(all_files[i])
答案 7 :(得分:0)
应该这样做(尽管不推荐使用 exec):
for num in range(len(your_list)):
exec('var'+str(num)+' = your_list[num]')