Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表中的每个元素分配给单独的变量?_Python_List_Variables - Fatal编程技术网

Python 如何将列表中的每个元素分配给单独的变量?

Python 如何将列表中的每个元素分配给单独的变量?,python,list,variables,Python,List,Variables,如果我有一份清单,说: 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不是创建动态变量的有效方法,但我尝试的是根据

如果我有一份清单,说:

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

编辑:


没关系,我应该开始一个新问题。

你应该回去重新思考为什么“需要”动态变量。很有可能,您可以通过循环列表或将其分块来创建相同的功能。

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

但是,假设您有一个很好的理由,下面介绍如何在python中执行此操作:

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

print var2  # etc.
这里,
globals()
是作为字典表示的本地名称空间。编号从零开始,就像数组索引一样,但是您可以告诉
enumerate()
从1开始

但同样:这不太可能对您真正有用。

相反,请执行以下操作:

>>> var = ['xx','yy','zz']
>>> var[0]
'xx'
>>> var[1]
'yy'
>>> var[2]
'zz'

如果项目数不变,则可以将列表转换为字符串并将其拆分为变量

wedges = ["Panther", "Ali", 0, 360]
a,b,c,d = str(wedges).split()
print a,b,c,d
一般来说,不建议对大量列表元素/变量使用这种编程

但是,下面的语句运行良好,正如预期的那样

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) )

我假设您是通过SQL查询获得列表的。为什么你不能承诺一个长度?这样看来,很明显,您希望获取这些值,并分别使用新获取的列表中的每个值执行额外的SQL命令。如果从SQL的角度来看,这不是一个很好的概念,如果我是正确的,我将提供语法。但是,您不需要使用此解决方案创建单独的变量名,也不会失去您正在努力实现的多功能性。

我找到了一个合适的应用程序。我有一堆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])

你到底为什么要这么做?变量只是名称而已。
ll[0]、ll[1]、ll[2]…
等有什么问题?用例是什么?看起来什么可以重新思考你的方法请看看如果你不知道列表有多长,你希望如何命名所有变量?+1-有时候,最好的答案是不回答,而是说“这不好”。你可能是对的。我猜列表是一种简化。我真正要处理的是长度未知的数据帧,我必须将其解析为与API调用兼容的格式。这意味着我基本上是为数据帧的每一行创建一个字典。在这种情况下,我必须创建相同数量的不同字典,所以我想我应该只创建变量。我将继续思考它与API调用兼容的问题,它似乎是一个XY问题。你应该陈述实际问题,而不是假设你需要如何解决问题,比如你应该开始一个新的问题,询问如何以不同的方式解决问题,而不是如何让你的解决方案发挥作用。我被否决了,因为我真的回答了这个问题?来吧@predmod stackoverflow python的受众非常优秀!我想有人只是把意识形态凌驾于知识之上……谢谢你的回答,这就是我来这里寻找的。我面前没有解释器,想知道
问题,solution=“1+1=2”。split(=”
是否有效,因为
split()
返回的是数组而不是2个值。不确定您的意思。如果“result”语句中没有,例如
a,b=None,1
,那么它将被分配给相应的变量(在本例中为
a
)。这是python的一个重要特性(也称为“元组解包”),在@JHixson描述的
问题,解决方案=…
情况下,它通常很有用。。。但是它不符合OP声明的不知道列表有多长的条件。这实际上可以满足我的需要-将数组转换为函数参数列表中的单个参数我不喜欢它。分配给的目的是拥有自己的名字。不过,这看起来不像一个像样的应用程序?