我需要像bellow一样多次获得相同的原始数据。
A=[2,3,4,5]
B=[[2,3,4,5],[2,3,4,5],[2,3,4,5],[2,3,4,5],...,[2,3,4,5]]
行数可以更改。 我该怎么办这个问题?
答案 0 :(得分:1)
试试这个:
B = [[i for i in A] for n in range(5)]
更改range ()
来电中的值以更改份数。这不像其他答案那样受到参考共享的影响。
或更短的等价物:
B = [A[:] for n in range(5)]
这也不会受到参考共享的影响,因为切片运算符也会创建深度副本*。
*至少就此输入而言
答案 1 :(得分:0)
正如已经指出的那样,以最简单的方式进行列表理解只会对同一个旧列表进行多次引用。为了确保我们获得列表的新副本,我们可以这样做:
A = [2, 3, 4, 5]
B = [list(A) for i in range(10)]
其中list(A)
确保我们获得A
的副本,而不是对同一列表的引用。
答案 2 :(得分:0)
你也可以这样做:
B=([A.copy()]*10)
但是,如果它们的元素是复杂的对象,它可以在B中的列表之间产生引用。但是如果你将它用于整数,字符串和其他基本的东西,它将会运作良好。
答案 3 :(得分:-2)
A = [1,2,3]
B= []
n= 5
for i in range(5):
B.append(A)
其中A是列表,B是结果列表,n是行数