Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 如何存储for循环中的列表,然后重用它?_Python - Fatal编程技术网

Python 如何存储for循环中的列表,然后重用它?

Python 如何存储for循环中的列表,然后重用它?,python,Python,我正在编写一个程序,使用一些公式从现有列表生成一个新列表。然后,新生成的列表也会执行相同的操作。我遇到的问题是,我不知道如何存储所有生成的列表 lst = [2, 2, 2, 2, 2, 2] m = 0 c = 0 full_list = [] full_list.append(lst) print(full_list) while m <= 3: for i in range(len(lst)): c = 2 * lst[i] lst[i] =

我正在编写一个程序,使用一些公式从现有列表生成一个新列表。然后,新生成的列表也会执行相同的操作。我遇到的问题是,我不知道如何存储所有生成的列表

lst = [2, 2, 2, 2, 2, 2]
m = 0
c = 0
full_list = []
full_list.append(lst)
print(full_list)

while m <= 3:
    for i in range(len(lst)):
        c = 2 * lst[i]
        lst[i] = c
    full_list.append(lst)
    m += 1
    print(full_list)
然而,我得到:

[[2, 2, 2, 2, 2, 2]]
[[4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4]]
[[8, 8, 8, 8, 8, 8], [8, 8, 8, 8, 8, 8], [8, 8, 8, 8, 8, 8]]
似乎当我将生成的列表附加到完整列表时,它会更新所有以前的条目。我如何避免这种情况?除了append还有其他命令吗

注意: 我知道这个特定的代码示例可以很容易地用numpy完成,但是我想在这里给出一个简单的示例,很容易理解,我不想在这里编写复杂的算法。但是解决这个问题的解决方案将用我的原始代码解决这个问题

试试这个:

lst = [2, 2, 2, 2, 2, 2]
full_list = []
full_list.append(lst)

while len(full_list) < 3:
    print(full_list)
    full_list.append( [ item *2 for item in full_list[-1] ] )
print(full_list)
lst=[2,2,2,2,2]
完整列表=[]
完整列表。附加(lst)
而len(完整列表)<3:
打印(完整列表)
完整列表。追加([item*2代表完整列表中的项目[-1]])
打印(完整列表)
这将缩短while循环逻辑,将while计数与您尝试生成的列表长度联系起来,并使用列表理解来生成新列表。

请尝试以下方法:

lst = [2, 2, 2, 2, 2, 2]
full_list = []
full_list.append(lst)

while len(full_list) < 3:
    print(full_list)
    full_list.append( [ item *2 for item in full_list[-1] ] )
print(full_list)
lst=[2,2,2,2,2]
完整列表=[]
完整列表。附加(lst)
而len(完整列表)<3:
打印(完整列表)
完整列表。追加([item*2代表完整列表中的项目[-1]])
打印(完整列表)

这会缩短while循环逻辑,将while计数与您试图生成的列表的长度联系起来,并使用列表理解来生成新列表。

不要命名变量
list
,它与内置列表冲突。我已将其编辑掉。但您是否想要包含所有
列表的
列表
?这个输出在我看来非常一致。为什么只有一种情况下,您希望有一个独立的
列表
?我不确定我是否理解您的意思。@katardin的答案解决了您的问题我想,我只是想补充一点,您的代码的问题是,lst是指向实际列表对象的指针,所以每次调用lst[I]=,它会更改lst的第i个元素,甚至是您已经附加到完整列表中的元素,因为它们指向同一个对象。如果要更改,则需要列表的深度副本。不要命名变量
列表
,它与内置列表冲突。我已将其编辑掉。但是否需要包含所有
列表
列表
?这个输出在我看来非常一致。为什么只有一种情况下,您希望有一个独立的
列表
?我不确定我是否理解您的意思。@katardin的答案解决了您的问题我想,我只是想补充一点,您的代码的问题是,lst是指向实际列表对象的指针,所以每次调用lst[I]=,它会更改lst的第i个元素,甚至是您已经附加到完整列表中的元素,因为它们指向同一个对象。如果你想改变,你需要一份清单的副本。