简体   繁体   English

Python:一步一步切片和删除

[英]Python: slice and remove in one step

I have a recursive Python function that removes one item from a copy of a list before passing the smaller list to the recursion: 我有一个递归的Python函数,该函数在将较小的列表传递给递归之前,从列表的副本中删除一项:

B = A[:]
B.remove(C)
Recursion(B)

That works fine, but it seems more elegant to do: 效果很好,但是这样做似乎更优雅:

Recursion(A[:].remove(C))

Unfortunately A[:].remove(C) yeilds None . 不幸的是, A[:].remove(C)结果是None (Why?) Is there an elegant way to do this in one line? (为什么?)是否有一种优雅的方法可以在一排中做到这一点?

好吧,您可以使用列表推导完成以下操作,该推导创建一个没有C元素的新列表,即假设A只有一个C元素-因为remove()消除了该元素的第一次出现,而列表推导则去除了所有事件:

Recursion([x for x in A if x != C])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM