如何复制数组元素

时间:2019-05-02 15:13:11

标签: python arrays

我有一个包含再次数组的数组。现在,我希望每个主阵列中都有两次内部阵列。

不幸的是,按照我的方式进行操作时,我弄乱了索引,无法修改数组中的特定元素(例如:Payliketable[2][5]),因为那是有用的时间。

如何在给每个内部数组一个索引的同时复制每个内部数组?

i = 1
while i < len(PaylikeTable):
        PaylikeTable.insert(i,PaylikeTable[i])
        i += 2

如前所述,“ Payliketable”数组再次由数组组成。

3 个答案:

答案 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]]