首页 > 解决方案 > 列表未正确切片

问题描述

菜鸟在这里。我目前在 python 中切片列表时遇到问题。我当前的代码如下。

lines = ['0', '1', '2', '3', '4', '5', '6']

lines[0:4] = ' _ '
print(lines)

输出是

[' ', '_', ' ', '4', '5', '6']

有时它甚至会将列表的长度更改为 3 或 2..

为什么要这样做?我觉得它应该很直截了当..

谢谢你的帮助!

编辑:对不起,如果我不清楚,我在开车上班前急着写这个。我想要的输出是所有索引位置,例如。0:5 将成为字符串“_”。像这样 [' _ ',' _ ',' _ ',' _ ',' ',' '] 希望这能更清楚一点

标签: python

解决方案


字符串'_'实际上只是一个字符数组[' ', '_', ' ']

因此,lines[0:4] = ' _ '将 lines 的第一个元素设置为 ' ',第二个设置为 '_',第三个设置为 ' '。这解释了您正在目睹的行为。

如果您试图使列表的前三个元素成为“_”,我建议只lines[i] = ' _ '为每个 i 做你想用该字符串替换的索引。如果您使用库函数,可能有一种单行方法可以做到这一点。

for i in range(4):
     lines[i] = ' _ '

推荐阅读