Python 在列表中重复列表X次
我正在做一个项目,我需要在一个列表中重复一个列表若干次。显然,Python 在列表中重复列表X次,python,list,nested-lists,Python,List,Nested Lists,我正在做一个项目,我需要在一个列表中重复一个列表若干次。显然,L.append(L)只是再次添加元素,而不创建单独的列表。我只是不知道如何在大名单中把名单分开 简而言之,这就是我所拥有的: L = [1,2,3,4,5] 如果我想重复,比如说,重复3次,那么我会: L = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] 我如何做到这一点?我正在大列表中查找列表。不需要任何函数: >>> L = [1,2,3,4,5] >>> [
L.append(L)
只是再次添加元素,而不创建单独的列表。我只是不知道如何在大名单中把名单分开
简而言之,这就是我所拥有的:
L = [1,2,3,4,5]
如果我想重复,比如说,重复3次,那么我会:
L = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
我如何做到这一点?我正在大列表中查找列表。不需要任何函数:
>>> L = [1,2,3,4,5]
>>> [L]*3
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
但是,您应该注意,如果更改任何列表中的一个值,所有其他值都将更改,因为它们引用相同的对象
>>> mylist = [L]*3
>>> mylist[0][0] = 6
>>> print mylist
[[6, 2, 3, 4, 5], [6, 2, 3, 4, 5], [6, 2, 3, 4, 5]]
>>> print L
[6, 2, 3, 4, 5]
为了避免这种情况:
>>> L = [1,2,3,4,5]
>>> mylist = [L[:] for _ in range(3)]
>>> mylist[0][0] = 6
>>> print L
[1, 2, 3, 4, 5]
>>> print mylist
[[6, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
请注意,L
没有改变,只有mylist
中的第一个列表改变了
感谢评论中的每个人的帮助:)。作为旁注,这不是
L.append(L)
所做的。试试看;你会对它的功能感到惊讶(这是值得理解的)。@abarnert哇,我从来都不知道。这就是找到无限循环时执行的操作吗?它只是将L
本身的一个副本添加为L
的最后一个元素。它并不一定是无限的……但是如果你试着,比如说,把它弄平,或者像树一样走,那会给你一个无限的循环。(如果你想一想,打印列表意味着像树一样行走……但是Python足够聪明,在打印列表时可以检查这一点,所以你得到的是[1,2,3,4,5,[…]
,而不是无限的文本墙。)@Haidro:无论如何,这与mylist[0]
和mylist[1]是一样的
正如您在回答中所解释的,是对同一事物的引用。只是L
和L[5]
是对同一事物的引用。类似的问题:。