3

我正在做一个项目,我需要在一个列表中重复一个列表一定次数。显然,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]]

我如何实现这一目标?我正在寻找大名单中的名单。

4

1 回答 1

10

不需要任何功能:

>>> 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改变了。

感谢评论中的每个人的帮助:)。

于 2013-04-19T01:39:24.553 回答