|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
a = ['f','y']
a[1:1] = 'air'
print(a)
运行结果为什么是['f', 'a', 'i', 'r', 'y']
而不是['f','air','y']呢?
同时如何能得到['f','air','y']这一结果呢?
在Python中,当你尝试使用 a[1:1] = 'air' 这样的语句时,你实际上是在尝试将一个字符串 'air' 插入到列表 a 的切片位置 1:1 中。然而,这个切片位置实际上是一个空切片,因为它表示的是索引 1 的位置之前和之后都是同一个位置(即索引 1),所以这里没有元素可以被替换。
但是,Python有一个特殊的行为,当你尝试向一个空切片中赋值时,它实际上会将赋值的序列插入到该切片的位置。由于切片 1:1 是在索引 1 的位置,所以字符串 'air' 会被分解成单个字符并逐一插入到这个位置之前,但由于是在一个“空隙”中插入,这些字符实际上是被依次添加到列表中的,而不是作为一个整体字符串添加。
因此,a[1:1] = 'air' 实际上等价于在索引 1 的位置之前逐个插入字符 'a', 'i', 'r',结果就变成了 ['f', 'a', 'i', 'r', 'y']。
要得到 ['f', 'air', 'y'] 这一结果,你应该使用列表的 append 方法(但这会在列表末尾添加元素,所以不适用于此情况),或者更合适的是使用列表的 insert 方法,或者在创建新列表时将元素组合起来。但在这里,由于你已经有一个列表并且想在中间插入一个字符串作为一个整体元素,你应该使用 insert 方法:
python
a = ['f', 'y']
a.insert(1, 'air') # 在索引1的位置插入字符串'air'作为一个整体元素
print(a)
这将输出:
['f', 'air', 'y']
这正是你想要的结果。
|
|