我有一个递归的Python函数,它在将较小的列表传递给递归之前从列表的副本中删除一个项目:
B = A[:]
B.remove(C)
Recursion(B)
这样做很好,但看起来更优雅:
Recursion(A[:].remove(C))
不幸的是A[:].remove(C)
yeilds None
。 (为什么?)有一种优雅的方式在一行中做到这一点吗?
答案 0 :(得分:3)
好吧,您可以使用list comprehension执行以下操作,这会创建一个没有C
元素的新列表,假设C
中只有一个A
元素 - 因为remove()
消除了元素的第一次出现,而列表推导删除了所有次出现:
Recursion([x for x in A if x != C])