如何在不创建新列表对象的情况下获取python列表中的一系列行?

时间:2014-05-03 21:16:29

标签: python list

我有一个大的二维列表,我把它当作一个矩阵。现在我通过

获取这些列表的子集
subset = mainList[startIndex:endIndex]

但我相信这会产生一个新列表,并将所有行复制到新列表中。有什么办法可以避免重复数据并只指向mainList中的行吗?谢谢你的回答!

1 个答案:

答案 0 :(得分:6)

是的,您创建了一个新的外部列表,但嵌套列表是复制的。您实际上并不是在复制数据,只会复制嵌套列表中的引用

这创建了一个列表对象,并且包含的​​引用很便宜。不要担心这些。

快速说明演示:

>>> mainList = [['foo', 'bar', 'baz'], ['spam', 'ham', 'eggs'], ['idle', 'cleese', 'jones']]
>>> sliced = mainList[:2]
>>> sliced
[['foo', 'bar', 'baz'], ['spam', 'ham', 'eggs']]
>>> sliced[0][1] = 'parrot'
>>> mainList
[['foo', 'parrot', 'baz'], ['spam', 'ham', 'eggs'], ['idle', 'cleese', 'jones']]

更改sliced中的嵌套列表,更改了与mainList共享的列表对象。