有没有办法获得列表切片的其余部分而不复制列表

时间:2016-03-05 20:17:43

标签: python string list python-3.x split

使用python中的字符串,我可以通过执行此操作轻松获得切片的剩余部分

my_string = 'pythonisawesome'
print(my_string.replace(my_string[6:8], ''))

print(my_string)

此输出

pythonwesome
pythonisawesome

我不需要复制字符串,因为python字符串是不可变的,因此第一个结果被丢弃,因为没有为其分配名称而my_string保持不变

但由于列表是可变的,因此列表无法执行此操作,例如:

my_list = [1,2,3,4,5,6,7,8,9,10]
del my_list[6:8] # or my_list[6:8] = ''

print(my_list)

输出

[1, 2, 3, 4, 5, 6, 9, 10]

另外我也发现在删除切片时修改my_list有点奇怪,我相信切片应该将列表的一部分作为副本删除而不是像索引那样行事

因为做:

my_otherlist = my_list[:]

创建列表的新副本(当它没有嵌套时)并且可以在不影响原始列表的情况下进行修改

我正在推动的主要观点是python应该有一个方法来获取切片并返回切片的其余部分

喜欢list.chopoff[::]

也许有一种方法,但我没有在标准库中遇到它。

1 个答案:

答案 0 :(得分:1)

如果你想要一个新列表,你必须像这样手动操作

 my_list = [1,2,3,4,5,6,7,8,9,10]

 print(my_list[:6] + my_list[8:])
 print(my_list)

它给出类似的输出

[1, 2, 3, 4, 5, 6, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]