如果索引范围未获得替换值的完整列表,为什么在将其添加为列表替换时字符串会变成字母?

时间:2019-07-16 01:04:27

标签: python

所以我创建了这个列表:

desk = ['mouse', 'matchbox', 'laptop', 'water']

当用新字符串替换列表中的两个值中的第一个,但是对于一个测试用例,不提供第二个替换字符串值时,python将第一个替换值分成列表中的各个字母。例如:

desk[0:2] = 'mouse'

desk : ['m', 'o', 'u', 's', 'e', 'laptop', 'water']

我知道这可能永远都没有用,但是我只是想弄清楚其背后的逻辑。

谢谢。

1 个答案:

答案 0 :(得分:0)

表格的切片分配

dest[start:end] = source

大致等同于:

# remove old contents of the slice
for _ in range(start, end):
    dest.pop(start)
# insert replacement in its place
for el in source:
    dest.insert(start, el)

source是字符串时,for el in source:意味着迭代字符,因此字符串被分割。

如果要使字符串成为单个元素,请将其包装在列表中。

desk[0:2] = ['mouse']