[英]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.