我有一个包含再次数组的数组。现在,我希望每个主阵列中都有两次内部阵列。
不幸的是,按照我的方式进行操作时,我弄乱了索引,无法修改数组中的特定元素(例如:Payliketable[2][5]
),因为那是有用的时间。
如何在给每个内部数组一个索引的同时复制每个内部数组?
i = 1
while i < len(PaylikeTable):
PaylikeTable.insert(i,PaylikeTable[i])
i += 2
如前所述,“ Payliketable”数组再次由数组组成。
答案 0 :(得分:0)
您是要复制数组中的每个元素吗? 为此,只需添加具有相同数组的数组
list1=[[1,2,3],[5,6,7]]
list1+list1 will get
[[1,2,3],[5,6,7],[1,2,3],[5,6,7]]
答案 1 :(得分:0)
首先,永远不要在迭代列表时修改列表。应该有更好的方法来做到这一点。
要理解我的解释,请在每次迭代后使用[[1], [2], [3]]
之类的易于消化的起始列表来手动检查当前列表。您将很容易发现问题所在。
假设没有内存限制,最好再添加一个列表:
doubled_list = []
for item in single_list:
doubled_list.extend([list(item), list(item)])
使用list()
创建item
的副本,直接使用item
将引用相同的item
实例。
更多阅读内容:Copying a list
答案 2 :(得分:0)
列表是可变的。有关mutables and immutables的更多信息,请参见此处。
要创建可变变量的副本(而不仅仅是对其的引用),最好的方法是使用copy模块。
import copy
PaylikeTable = [[1, 2, 3], [2, 4, 6], [5, 6, 2]]
i = 0
lpt = len(PaylikeTable)*2
while i < lpt:
PaylikeTable.insert(i, copy.deepcopy(PaylikeTable[i]))
i += 2
print(PaylikeTable) #the doubled list
#[[1, 2, 3], [1, 2, 3], [2, 4, 6], [2, 4, 6], [5, 6, 2], [5, 6, 2]]
PaylikeTable[3][1] = 99
print(PaylikeTable) #only element 3, 1 is edited.
#[[1, 2, 3], [1, 2, 3], [2, 4, 6], [2, 99, 6], [5, 6, 2], [5, 6, 2]]