我知道如何将列表插入列表,"slice+=list"…
master=[0,1,2,3,7,8,9]
master[:4]+=[4,5,6] # insert 4,5,6
(粗略地)这个操作的逆操作是从列表中删除切片4:7,我尝试:
extracted=del master[4:7]
但是这会给出一个语法错误"SyntaxError: invalid syntax"。同样,逆切片操作符"-="似乎也不存在。
作为一种变通方法,我使用了以下方法:
extracted=master[4:7]; del master[4:7]
这个"工作","提取"是从"主"中删除的子片,例如
print dict(master=master,extracted=extracted)
输出:{'extracted': [4, 5, 6], 'master': [0, 1, 2, 3, 7, 8, 9]}
有没有更好的/python的/更简单的方法?
我特别不喜欢重复的[4:7]:
extracted=master[4:7]; del master[4:7]"
由于潜在的副作用:eg
extracted=master[randint(0,3):randint(7,10)]; del master[randint(0,3):randint(7,10)]
。以下内容读起来要好得多,而且没有"副作用"…
extracted=del master[randint(0,3):randint(7,10)]
提示吗?是否有一个切片"-="操作符,我可以用来反转切片"+="操作符的动作?
您最好使用slice
:
-> s = slice(4, 7)
-> master
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
--> extracted = master[s]
--> extracted
[4, 5, 6]
--> del master[s]
--> master
[0, 1, 2, 3, 7, 8, 9]
它仍然需要两个命令,但是您可以使用一个对象来表示您想要的部分。
对于我来说,更干净的选项如下:
>>> L=[1,2,3,4,5,6] #Define the list
>>> L #Check it
[1, 2, 3, 4, 5, 6]
>>> extract= L[3:6] ; L[3:6]=[] #Assign the slice to 'extract'; delete the slice
>>> L #Items removed from the list
[1, 2, 3]
>>> extract #And assigned to extract
[4, 5, 6]
干杯!