如何在列表中复制列表的元素?
How to copy the elements of the list within the list?
我有一个列表 list_1 = [[1,2,3], [4,5,6], [7,8,9], ....]
。我要[[1,2,3], [1,2,3], [4,5,6], [4,5,6], [7,8,9], [7,8,9]]
。我怎样才能做到这一点?
基本上就像将列表的每个元素复制到它的连续索引。
from copy import deepcopy
def multiply_list_elem(lst, n):
out = list()
for elem in lst:
for _ in range(n):
out.append(deepcopy(elem))
return out
if __name__ == '__main__':
list_1 = [[1,2,3], [4,5,6], [7,8,9]]
print(multiply_list_elem(list_1, 2))
最简单的解决方案如下:
使用参考
def double(some_list):
return_list = []
for element in some_list:
return_list.append(element)
return_list.append(element)
return return_list
# example call
l = [1,[2, 42]]
print(double(l))
# output: [1,1,[2,42],[2,42]]
可以使用第二个 for 循环,但速度较慢。因此,我建议不要使用它,除非您想要 Félix Herbinet 的解决方案中提供的可变乘数。
使用(深度)复制
由于题中明确含有抄袭二字,我也展示抄袭版:
import copy
def double(some_list):
return_list = []
for element in some_list:
return_list.append(copy.deepcopy(element))
return_list.append(copy.deepcopy(element))
return return_list
# example call
l = [1,[2, 42]]
print(double(l))
# output: [1,1,[2,42],[2,42]]
如果您不确定是需要复制还是深层复制,请阅读:https://docs.python.org/3/library/copy.html#shallow-vs-deep-copy
您可以将其用作迭代过程:
list_1 = [[1,2,3], [4,5,6], [7,8,9]]
list_2 = []
for element in list_1:
for times in range(2):
list_2.append(element)
或者这个列表理解:
首先声明另一个列表double
,然后修改double
,为lst
的每个元素添加两个元素。
如果不想修改原始列表,可以删除 lst = double
语句。
示例代码:
def multiply(lst):
double = [];
for i in lst:
for j in range(2):
double.append(i);
lst = double;
return lst;
您可以将列表加倍,然后根据子列表的第一个索引进行排序:
from operator import itemgetter
from copy import deepcopy
list_1 = [[1,2,3], [4,5,6], [7,8,9]]
list_2 = sorted(list_1 + deepcopy(list_1), key = itemgetter(0))
我有一个列表 list_1 = [[1,2,3], [4,5,6], [7,8,9], ....]
。我要[[1,2,3], [1,2,3], [4,5,6], [4,5,6], [7,8,9], [7,8,9]]
。我怎样才能做到这一点?
基本上就像将列表的每个元素复制到它的连续索引。
from copy import deepcopy
def multiply_list_elem(lst, n):
out = list()
for elem in lst:
for _ in range(n):
out.append(deepcopy(elem))
return out
if __name__ == '__main__':
list_1 = [[1,2,3], [4,5,6], [7,8,9]]
print(multiply_list_elem(list_1, 2))
最简单的解决方案如下:
使用参考
def double(some_list):
return_list = []
for element in some_list:
return_list.append(element)
return_list.append(element)
return return_list
# example call
l = [1,[2, 42]]
print(double(l))
# output: [1,1,[2,42],[2,42]]
可以使用第二个 for 循环,但速度较慢。因此,我建议不要使用它,除非您想要 Félix Herbinet 的解决方案中提供的可变乘数。
使用(深度)复制
由于题中明确含有抄袭二字,我也展示抄袭版:
import copy
def double(some_list):
return_list = []
for element in some_list:
return_list.append(copy.deepcopy(element))
return_list.append(copy.deepcopy(element))
return return_list
# example call
l = [1,[2, 42]]
print(double(l))
# output: [1,1,[2,42],[2,42]]
如果您不确定是需要复制还是深层复制,请阅读:https://docs.python.org/3/library/copy.html#shallow-vs-deep-copy
您可以将其用作迭代过程:
list_1 = [[1,2,3], [4,5,6], [7,8,9]]
list_2 = []
for element in list_1:
for times in range(2):
list_2.append(element)
或者这个列表理解:
首先声明另一个列表double
,然后修改double
,为lst
的每个元素添加两个元素。
如果不想修改原始列表,可以删除 lst = double
语句。
示例代码:
def multiply(lst):
double = [];
for i in lst:
for j in range(2):
double.append(i);
lst = double;
return lst;
您可以将列表加倍,然后根据子列表的第一个索引进行排序:
from operator import itemgetter
from copy import deepcopy
list_1 = [[1,2,3], [4,5,6], [7,8,9]]
list_2 = sorted(list_1 + deepcopy(list_1), key = itemgetter(0))