如何在循环中创建包含动态变量的动态列表

时间:2017-07-10 12:20:49

标签: python

在Python中,我尝试使用动态变量名创建动态列表。

variable = dict()
x = 0
while (x < 10):
    for i in range(0, 10):
        variable[i] = i + 3   # just an example code
        print (i)
    x = x + 1

我需要的是每个x的每个变量[i]的列表。但是当我创建这个变量[i]时,我不能再次使用另一个值......

3 个答案:

答案 0 :(得分:2)

字典中的键必须是唯一的。

在第一个for循环之后,你有一个以1 ... 10作为键的字典。 当你进行第二次循环时,你只需覆盖之前的值。

相反,您可以聚合结果,当我说聚合时,我的意思是如果存在,您将对现有密钥的值求和。

如果密钥不存在,则variable.get(i, 0)的结果为0。

variable = dict()
x = 0
while (x < 10):
    for i in range(0, 10):
        variable[i] = variable.get(i, 0) + i + 3   # just an example code
    x = x + 1

答案 1 :(得分:1)

忽略代码示例中似乎不属于实际问题的部分,您可以使用&#34;追加&#34;

将列表项添加到列表中
variable = [] # create empty list
for i in range(10): # range(10) is the same as range(0,10)
    variable.append(i+3)
    print(i)

顺便说一句,您的代码中不需要while(x<10)x=x+1,因为for循环完全适合您。

答案 2 :(得分:0)

目前,您的代码将variable定义为:

{0: 3, 1: 4, 2: 5, 3: 6, 4: 7, 5: 8, 6: 9, 7: 10, 8: 11, 9: 12}

你可以用这个单行获得相同的结果:

>>> {i: i + 3 for i in range(10)}
{0: 3, 1: 4, 2: 5, 3: 6, 4: 7, 5: 8, 6: 9, 7: 10, 8: 11, 9: 12}

请注意,使用0到n-1之间的整数键的dict通常没有意义。为此,您只需使用包含n元素的列表:

>>> [i + 3 for i in range(10)]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

这意味着你可以写

>>> range(3,13)
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

如果您需要列表列表或列表词典,可以使用以下结构:

>>> {i: [i + j for j in range(3)] for i in range(3)}
{0: [0, 1, 2], 1: [1, 2, 3], 2: [2, 3, 4]}

>>> [[i + j for j in range(3)] for i in range(3)]
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]