Python列表切片赋值字符串为何拆分为字符列表?
列表切片赋值的这个行为,本质是Python迭代特性在起作用
先看你给出的代码:
L = [] L[0:] = 'string' # 等价于 L[:] = 'string'
执行后L变成['s','t','r','i','n','g'],和list('string')结果一致,原因可以拆成两点说明:
切片赋值的规则
当你用L[:]或L[0:]这种全切片给列表赋值时,Python会把赋值号右侧的内容当作可迭代对象处理,将该对象的每个元素依次替换/添加到列表的对应切片位置。因为原列表L是空的,所以相当于直接把迭代出的所有元素塞进列表。字符串属于可迭代对象
在Python里,字符串本质是字符的序列,属于可迭代对象。不管是把字符串传给切片赋值的右侧,还是传给list()构造函数,Python都会逐个遍历字符串里的每个字符,将它们作为独立元素加入列表。
说白了,这两个操作的核心逻辑都是把字符串拆成单个字符再组装成列表,所以结果完全一致。
内容的提问来源于stack exchange,提问作者WeakLearner
相关产品推荐
相关产品推荐

