理解Python列表操作

理解Python列表操作,python,list,sequence,Python,List,Sequence,我是python新手。我正在学习一些基本的东西。我在python列表上做了一些操作,比如三个列表=[]*3当我执行这段代码时,它只给我一个空列表,比如[]。为什么不给我3张空名单?一些像这样的东西,[]code>,[],[]它在 s*n或n*s相当于将s添加到自身n次 其中,s是一个序列,n是一个int。比如说 >>> [1,2,3]*3 [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> x = []*3 >>> x [] &

我是python新手。我正在学习一些基本的东西。我在python列表上做了一些操作,比如
三个列表=[]*3
当我执行这段代码时,它只给我一个空列表,比如
[]
。为什么不给我3张空名单?一些像这样的东西,[]code>,[],[]

它在

s*n
n*s
相当于将
s
添加到自身
n

其中,
s
是一个序列,
n
是一个
int
。比如说

>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> x = []*3
>>> x
[]
>>> y = [1]*3
>>> y
[1, 1, 1]
这也与其他序列一致,例如
str

>>> 'hello'*3
'hellohellohello'
如果你想要一个包含3个空列表的列表,你可以说

>>> [[] for _ in range(3)]
[[], [], []]

它不乘列表,而是乘列表中的项目 比如说

>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> x = []*3
>>> x
[]
>>> y = [1]*3
>>> y
[1, 1, 1]

算术规则(编程中的运算符)仍然适用,您不能使用“0”或空值进行乘法运算并得到不同的结果,您可以得到以前的原始值。

要获得预期效果,您需要使用
[[]]*3
。然而,最终的3个子列表实际上都是相同的列表,因此更改其中一个子列表会更改所有子列表,这可能是您不希望的。要获得3个独立的子列表,可以使用类似于
[]的内容来表示范围(3)中的i