Python:一步切片并删除

时间:2014-11-29 00:55:15

标签: python slice

我有一个递归的Python函数,它在将较小的列表传递给递归之前从列表的副本中删除一个项目:

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

这样做很好,但看起来更优雅:

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

不幸的是A[:].remove(C) yeilds None。 (为什么?)有一种优雅的方式在一行中做到这一点吗?

1 个答案:

答案 0 :(得分:3)

好吧,您可以使用list comprehension执行以下操作,这会创建一个没有C元素的新列表,假设C中只有一个A元素 - 因为remove()消除了元素的第一次出现,而列表推导删除了所有次出现:

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