【问题标题】:Python - how to generate list of variables with new number at endPython - 如何生成带有新数字的变量列表
【发布时间】:2013-11-07 20:23:15
【问题描述】:

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

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

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

【问题讨论】:

  • 你应该解释真正的问题。动态创建变量不是一个好主意。

标签: python variables auto-generate


【解决方案1】:

使用list comprehension

[[] for n in range(N)]

或者一个简单的for循环

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      你可以连接变量赋值,如果这就是你的意思,你可以将它们全部设置为 [] 变量 1,变量 2,变量 3 = [] 您是否希望将所有变量设置为空数组或实际数字

      【讨论】:

        【解决方案4】:

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

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

        但是,如果您希望命名这些列表(即var1var2 等),这正是我认为您想要的,那么您可以使用来自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': []})
        >>>
        

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

        【讨论】:

          【解决方案5】:

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

          var1 = 123456 
          var2 = 123457 
          list1 = [var1, var2] 
          raninput = input("Words") 
          if raninput not in list1: 
            print("Hi")
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-01-16
            • 2019-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多