理解列表的python语法

理解列表的python语法,python,Python,我是Python新手,我注意到的第一件事是语法简洁,但不明显 例如,不清楚上述三个陈述中发生了什么。我运行了它们并得到了一些结果,似乎语句1没有更新列表,而语句2和语句3却在更新列表。但是,我相信这里还有更多的事情要做 上述每个赋值的含义是什么?2和3的含义相同(片的step参数是可选的,并且这两个片都使用1的默认step),但它们本质上都不同于1。切片赋值(lst[:]=…)变异原始对象,而公共赋值(lst=…)将变量重新绑定到新对象 list = sorted(set(list)) list

我是Python新手,我注意到的第一件事是语法简洁,但不明显

例如,不清楚上述三个陈述中发生了什么。我运行了它们并得到了一些结果,似乎语句1没有更新列表,而语句2和语句3却在更新列表。但是,我相信这里还有更多的事情要做

上述每个赋值的含义是什么?

2和3的含义相同(片的
step
参数是可选的,并且这两个片都使用
1
的默认
step
),但它们本质上都不同于1。切片赋值(
lst[:]=…
变异原始对象,而公共赋值(
lst=…
)将变量重新绑定到新对象

list = sorted(set(list))
list[:] = sorted(set(list))
list[::] = sorted(set(list))
值得注意的一点是,切片分配可以在rhs上具有任何iterable(对于部分切片,其元素数量必须与切片长度匹配):

有关更多详细信息,请参见中的一些。

2和3也执行相同的操作(切片的
step
参数是可选的,并且这两个切片都使用
1
的默认
step
),但它们本质上都不同于1。切片赋值(
lst[:]=…
变异原始对象,而公共赋值(
lst=…
)将变量重新绑定到新对象

list = sorted(set(list))
list[:] = sorted(set(list))
list[::] = sorted(set(list))
值得注意的一点是,切片分配可以在rhs上具有任何iterable(对于部分切片,其元素数量必须与切片长度匹配):


有关更多详细信息,请参阅中的一些。

这绝对是一个重复的问题,但我忘记了它与哪个问题重复了。。。有人能帮忙标记为重复的吗?这绝对是一个重复的问题,但我忘了它是与哪个问题重复的。。。有人能帮我标记为复制的吗?谢谢,使用
[:]与
[:]有什么区别吗?不,据我所知,他们都将
步骤设置为
1
。他们完全相同@Lazer——当省略时,切片表示法变成
obj[start:stop:step]
obj[start:stop]
,开始和停止分别表示序列的开始和结束。如果省略
步骤
,则意味着
1
谢谢,使用
[:]
[:]
有什么区别吗?不,据我所知,它们都将
步骤
arg设置为
1
。它们是完全相同的@Lazer——切片表示法是
obj[start:stop:step]
obj[start:stop]
省略时,开始和停止分别表示序列的开始和结束。如果省略
步骤
,则暗示为
1
>>> lst = [1,2,3]
>>> lst[1:] = 'ab'
>>> lst
[1, 'a', 'b']