python - (Python) 列表中切片函数的行为

标签 python slice

我正在学习 Python 并且对 Slice 的工作方式有基本的了解,但是有一个特定的代码块我很难掌握:

L = [2,4,6,8,0]

L[0:3] = [2,4,6,8]

print L[4]

这个输出是8,我觉得很奇怪;当我将第二行读为“将列表的前 4 个元素转换为 2、4、6、8”时,我希望它仍然为 0。这仍然会留下 [2,4,6,8,0] 的列表,这显然不会发生。如果有人能解释为什么 Slice 会这样,我将不胜感激!

最佳答案

>>> L = [2,4,6,8,0]
>>> L[0:3] = [2,4,6,8]
>>> L
[2, 4, 6, 8, 8, 0]

这改变了列表,L[0:3][2, 4, 6],所以你在 6 之后追加另一个 8,这就是第四个值的原因现在是 8:

>>> L[4]
8

看看这张图:

enter image description here

所以也许您想要的是 L[0:4]L[:4]。希望对您有所帮助。

关于python - (Python) 列表中切片函数的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575574/

相关文章:

python - 加载索引具有冗余列的 parquet 文件时出现 pyarrow 问题

python - 将字典 <str, list> 展平为综合列表

python - 按以某个字符串开头的键对字典进行切片

go - Go slice 调整大小的不同表现

python - 使用 argparse 解析形式为 "arg= val"的参数

python - 在 python xmlrpc 代理上使用 getattr

匹配keyworks的python过滤行

javascript - 比较两个不同长度的数组并返回包含不常见元素的数组

pointers - golang中slice的地址

python - 如何伸缩 numpy 数组的列?