import numpy as np
r_numbers=[1,2,3,4]
numbers=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i,items in enumerate(r_numbers):
new_numbers=numbers[i]
new_numbers.remove(items)
print(np.product(new_numbers))
import numpy as np
r_numbers=[1,2,3,4]
numbers=[r_numbers for items in r_numbers]
for i,items in enumerate(r_numbers):
new_numbers=numbers[i]
new_numbers.remove(items)
print(np.product(new_numbers))
发布于 2018-07-26 11:28:11
你需要复制你正在使用的列表作为以下元素numbers
:
import numpy as np
r_numbers=[1,2,3,4]
numbers=[r_numbers[:] for items in r_numbers] # This line has an '[:]' inserted.
for i,items in enumerate(r_numbers):
new_numbers=numbers[i]
new_numbers.remove(items)
print(np.product(new_numbers))
没有复制,每个元素(“行”)numbers
指向相同的底层4元素数组(r_numbers
)。因此,当你删除for循环中的项目时,你将从所有子列表中删除该项目:
import numpy as np
r_numbers=[1,2,3,4]
numbers=[r_numbers for items in r_numbers]
for i,items in enumerate(r_numbers):
new_numbers=numbers[i]
new_numbers.remove(items)
print(numbers)
#print(np.product(new_numbers))
输出:
[[2, 3, 4], [2, 3, 4], [2, 3, 4], [2, 3, 4]] # After 1 iteration, "all" 1s are removed
[[2, 4], [2, 4], [2, 4], [2, 4]] # After 2 iterations, "all" 3s are removed
这不是原始代码的工作原理。
虽然你可以通过numbers
这种方式创建列表清单,但为了清楚起见,通常首选以下方式:
numbers = [r_numbers[:] for _ in range(len(r_numbers)]
https://stackoverflow.com/questions/-100005775
复制相似问题