如果我有清单,请说:
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,var3等。
编辑::
没关系,我应该开始一个新的问题。
你到底为什么要这样做?
变量只是名称。 ll[0], ll[1], ll[2] ...等有什么问题?
用例是什么?看起来是什么可以重新考虑您的方法
当您只需要从已有容器中访问它时,为什么要将某物移动到另一个容器中?
我正在进行API调用,我需要解析一个csv文件以提取输入到我的API调用中的数据。
使用csv模块有什么问题?
请参阅将数据保留在变量名之外
如果您不知道列表有多长,您将如何命名所有变量?
我刚刚开始学习Python,即时通讯也面临着类似的情况(我有固定的条目集)。我有一个配置文件,我将为一个字符串grepping,如果某行匹配,我想读取该行。现在,每一行都有一个固定的(六个)条目集,这些条目由字符串和整数(端口号)组成,所有这些条目都由定界符分隔。为了使我的脚本更具可读性,我想为每个条目分配一个名称,以便在工作或维护人员时可以轻松识别它们。只是想知道将变量分配给每个条目是否是有效的用例或良好做法?
@ rohit-jain用于需要从元组中识别和隔离数据并将其放入变量的情况,以便元组数据可在代码中的其他位置使用。
一般来说,不建议对大量列表元素/变量使用这种编程。
但是下面的语句工作正常,并且符合预期
a,b,c = [1,2,3]
这称为"销毁"。
在某些情况下,它可以为您节省一些代码行,例如我有一个a,b,c作为整数,并希望它们的字符串值为sa,sb,sc:
sa, sb,sc = [str(e) for e in [a,b,c]]
甚至更好
sa, sb,sc = map(str, (a,b,c) )
感谢您的答复,这就是我来这里寻找的内容。在我前面没有解释器,并且想知道problem, solution ="1+1=2".split("=")是否有效,因为split()返回一个数组而不是2个值
不明白你的意思。如果"结果"语句的一部分为"无",例如a,b = None, 1,则它将被分配给相应的变量(在本例中为a)。
这样做不是一个好主意;定义变量后将如何处理?
但是,假设您有充分的理由,以下是在python中执行的方法:
for n, val in enumerate(ll):
globals()["var%d"%n] = val
print var2 # etc.
在这里,globals()是表示为字典的本地名称空间。编号从零开始,就像数组索引一样,但是您可以告诉enumerate()从1开始。
但是,再次:这实际上不太可能对您有用。
我被拒绝投票是因为我实际上回答了这个问题?来吧!
您应该回过头来重新考虑为什么"需要"动态变量。您可以通过遍历列表或将其切成块来创建相同的功能。
+1-有时,最好的答案是不回答而是说"这不好"。
也许你是对的。我想清单是一种简化。我真正要处理的是一个长度未知的数据帧,我必须将其解析为与API调用兼容的格式。这意味着我基本上是为数据帧的每个"行"创建一个字典。在那种情况下,无论如何我必须创建相同数量的不同字典,因此我认为Id只是创建变量。我一直在想
that is compatible with API calls,似乎是XY问题。您应该说明实际问题,而不是假设自己需要解决的问题
听起来您应该开始一个新问题,寻求有关如何以其他方式解决问题的建议,而不是使解决方案有效的方法。
如果项目数不变,则可以将列表转换为字符串并将其拆分为变量。
wedges = ["Panther","Ali", 0, 360]
a,b,c,d = str(wedges).split()
print a,b,c,d
这实际上可以满足我的需要-将数组转换为函数参数列表中的单个args
我已经找到了一个不错的应用程序。我有一堆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])
我假设您正在通过SQL查询获取列表-为什么您不能提交长度。这样,对我来说似乎很明显,您希望采用这些值并使用该新获取的列表中的每个值分别执行其他SQL命令。如果从SQL的角度来看,这不是一个概念,如果我是对的,我会提供语法。但是,您无需使用此解决方案创建单独的变量名,也不会失去您正在努力的多功能性。如果我很抱歉浪费您的时间
相反,请执行以下操作:
>>> var = ['xx','yy','zz']
>>> var[0]
'xx'
>>> var[1]
'yy'
>>> var[2]
'zz'
我不喜欢目的是要拥有自己的名字。