Python中的空变量列表

2024-09-30 16:35:14 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能创建一个尚未定义的变量/名称*列表,然后在以后的阶段循环使用该列表来定义它们?在

像这样:

varList = [varA, varB, varC]
for var in varList:
    var = 0
print(varList)

>>>[0, 0, 0]

我问这个问题的原因是因为我有一个项目,在这个项目中,我可以假设通过一个Pandas系列*来批量填充40+个变量/名称*。不幸的是,Python似乎不允许在列表中使用未定义的变量。 有人有创造性的解决办法吗?在

编辑:既然你问的是具体问题,下面是:

我有一个熊猫系列,看起来像这样(请原谅瑞典人):

^{pr2}$

我想将这个数组中的每个值存储到一组新的变量/名称*中,我想控制它们的名称。例如,我希望包含第一个值的新变量/name*称为“förbKVVptp”,第二个值名为“förbKVVsflis”,依此类推。在

“正常”选项是手动分配每个变量,如下所示:

förbKVVptp, förbKVVsflis, förbKVVåflis = Elanv.iloc[0], Elanv.iloc[1], Elanv.iloc[2] .... 

但这会创建一个不太好看的长串代码来命名变量/名称*。相反,我想我可以做这样的事情(很明显,所有的变量/名称*,而不仅仅是前三个),这样看起来和感觉更干净:

varList = [förbKVVptp, förbKVVsflis, förbKVVåflis]
for i, var in enumerate(varList): var = Elanv.iloc[i]

print(varList)

>>>[5653,021978, 0, 337,1416119]

显然,如果我必须写两次我的新变量/名称*的名称(首先定义它们,然后将它们放入varList中),那么这就变得毫无意义了,所以我才要求这样做。在


Tags: 项目in名称列表for定义varprint
3条回答
  • 问题的答案是列表中不能有未定义的变量。在
  • 我的解决方案是专门解决这部分问题的,我问这个问题的原因是我有一个项目,在这个项目中,我可以假设通过一个Pandas数组循环来批量填充100多个数组。
  • 下面的解决方案用None对列表进行前缀,然后可以更改列表中的值。在

代码:

varList = [None]*3
for i in range(len(varList)):
    varList[i] = 0
print(varList)  

输出:
[0, 0, 0]

不能在python中创建未初始化的变量。Python并没有真正的变量,它的名称引用值。未初始化的变量将是一个不引用值的名称-因此基本上只是一个字符串:

varList = ['förbKVVptp', 'förbKVVsflis', 'förbKVVåflis']

通过将这些字符串与值关联,可以将它们转换为变量。其中一种方法是通过^{}

^{pr2}$

然而,像这样动态地创建变量通常是一种代码味道。考虑将值存储在字典或列表中:

my_vars_dict = {
    'förbKVVptp': Elanv.iloc[0],
    'förbKVVsflis': Elanv.iloc[1],
    'förbKVVåflis': Elanv.iloc[2]
}

my_vars_list = [Elanv.iloc[0], Elanv.iloc[1], Elanv.iloc[2]]

另请参见How do I create a variable number of variables?。在

因此,在您的示例中,您试图做的事情并不能达到您期望的效果,就是您试图修改列表的方式:

for var in varList:
    var = 0

当您执行var = 0操作时,它不会更改列表,也不会更改varA、varB、varC的值(如果已定义)

类似地,以下内容不会更改列表的值。它只会改变var的值

^{pr2}$

要更改列表的值,需要对列表上的索引项执行赋值表达式:

mylist = [None, None, None]
for i in range(len(mylist)):
    mylist[i] = 0

print(mylist)

在创建槽之前,通过创建一个空的值来分配槽是低效的。{a1或者更适合用列表的方式来附加值。在

相关问题 更多 >