3

我想做的是找到一种更简洁的方法来创建彼此相似的空列表变量,但最后的数字不同。

#For example:
var1 = []
var2 = []
var3 = []
var4 = []
#...
varN = []

#with the end goal of:
var_list = [var1,var2,var3,var4, ... varN]
4

5 回答 5

6

使用列表理解

[[] for n in range(N)]

或一个简单的 for 循环

empt_lists = []
for n in range(N):
    empt_lists.append([])

请注意,[[]]*N这不起作用,它将对所有项目使用相同的指针!!!

于 2013-11-07T20:26:25.253 回答
1

好的...可能的解决方案是生成类属性,您可以在之后使用:

class MyClass:
    pass
myinstance = MyClass()  # if you want instance for example
setattr(myinstance, "randomname", "desiredvalue")
print myinstance.randomname  # wonderfull!

如果可能的话,把它放在列表中!

于 2015-04-25T20:59:40.923 回答
0

您可以连接变量分配,如果这就是您的意思,您可以将它们全部设置为 [] var1, var2, var3 = [] 您是否希望将所有变量设置为空数组或实际数字

于 2013-11-07T20:30:27.810 回答
0

动态变量被认为是一种非常糟糕的做法。因此,我不会给出使用它们的解决方案。:)

正如@GarrettLinux 指出的那样,您可以轻松地进行列表推导,从而创建列表列表。然后,您可以通过索引(即 , 等)访问lst[0]这些lst[1]列表

但是,如果您希望命名这些列表(即var1,var2等),这就是我认为您想要的,那么您可以使用来自 的 defaultdict collections.defaultdict

from collections import defaultdict
dct = defaultdict(list)
for i in xrange(5):
    dct["var{}".format(i+1)]

演示:

>>> dct
defaultdict(<type 'list'>, {'var5': [], 'var4': [], 'var1': [], 'var3': [], 'var2': []})
>>> dct["var1"]
[]
>>> dct["var1"].append('value')
>>> dct["var1"]
['value']
>>> dct
defaultdict(<type 'list'>, {'var5': [], 'var4': [], 'var1': ['value'], 'var3': [], 'var2': []})
>>>

如您所见,此解决方案非常模仿动态变量的效果。

于 2013-11-07T20:41:03.160 回答
-1

我也有这个问题。我最终制作了我的所有变量并制作了一个包含变量名的列表

var1 = 123456 
var2 = 123457 
list1 = [var1, var2] 
raninput = input("Words") 
if raninput not in list1: 
  print("Hi")
于 2018-12-28T19:49:18.723 回答