Python:对于列表中的每个元素,都会获得一个没有该元素的新列表

时间:2014-08-20 20:29:04

标签: python python-3.x python-2.7

我有一个列表,我想从中生成所有可能的子列表,其中缺少一个元素。

>>> a = [1, 2, 3, 4]
>>> something(a)
[2,3,4], [1,3,4], [1,2,4], [1,2,3]

2 个答案:

答案 0 :(得分:5)

使用itertools.combinations

from itertools import combinations

a = [1, 2, 3, 4]
result = combinations(a, 3)

print(list(result))
# [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

虽然请记住combinations会返回一个生成器,所以如果你想要它以列表形式,或者如果你想查看它,你必须先将它转换成一个列表。

答案 1 :(得分:2)

对于每个列表索引i,请使用i之前的元素和i之后的元素:

for i in range(len(a)):
    yield a[:i] + a[i+1:]