提取(&从列表中删除一个切片?或. .什么是“逆”?切片+=列表操作符- python



我知道如何将列表插入列表,"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]

干杯!

相关内容

  • 没有找到相关文章

最新更新