菜鸟在这里。 我目前在python中切片列表时遇到问题。 我当前的代码如下。
lines = ['0', '1', '2', '3', '4', '5', '6']
lines[0:4] = ' _ '
print(lines)
,输出为
[' ', '_', ' ', '4', '5', '6']
有时它甚至会将列表的长度更改为3或2。
为什么要这样做?我觉得应该很简单。
感谢您的帮助!
edit:对不起,如果我不清楚,我急着在开车上班之前写这篇文章。我想要的输出将是所有索引位置,例如0:5将成为字符串“ _”。像这样[[_','_','_','_','',''] 希望可以将其清除更多
答案 0 :(得分:0)
字符串'_实际上只是一个字符数组[' ', '_', ' ']
。
因此,lines[0:4] = ' _ '
将行的第一个元素设置为'',将第二个元素设置为'_',第三个元素设置为''。这说明了您正在目睹的行为。
如果要使列表的前三个元素为'_,我建议对每个要替换为该字符串的索引i进行lines[i] = ' _ '
。如果使用库函数,可能有一种单行方法。
for i in range(4):
lines[i] = ' _ '
答案 1 :(得分:0)
如果您要使用_
替换“开始4”元素然后尝试
lines = ['0', '1', '2', '3', '4', '5', '6']
for idx,value in enumerate(lines[0:4]):
lines[idx]="_"
print(lines)
如果您要单线解决方案,请尝试
lines = ['0', '1', '2', '3', '4', '5', '6']
lines=["_" if 0 <= idx <= 3 else v for idx,v in enumerate(lines) ]
print(lines)
答案 2 :(得分:0)
只能将切片分配给可迭代对象。字符串是唯一的,因为它既可以是单个对象,也可以是可迭代的字符列表。当切片分配要求可迭代时,它将获取替换字符串中的各个字符。
我对您的结果感到惊讶,但是背后有逻辑。
我认为可以通过以下方式获得期望的结果
lines[0:4] = [' - ']
编辑:您的问题尚不清楚,通过编辑看来您希望将4个元素替换为其他4个元素。在这种情况下,替换还必须包含4个元素:
lines[0:4] = [' - '] * 4