Python列表理解 - 需要元素跳过组合

Raj*_*kar 3 python list-comprehension list

对于此输入列表

[0, 1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

我需要这个输出

[[0, 2],
 [0, 3],
 [0, 4],
 [0, 5],
 [1, 3],
 [1, 4],
 [1, 5],
 [2, 4],
 [2, 5],
 [3, 5],
 [0, 2, 3],
 [0, 3, 4],
 [0, 4, 5],
 [1, 3, 4],
 [1, 4, 5],
 [2, 4, 5],
 [0, 2, 3, 4],
 [0, 3, 4, 5],
 [1, 3, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

我试过这段代码,

for k in range( 0, 5 ):
    for i in range( len( inputlist ) - ( 2 + k ) ):
        print [inputlist[k], inputlist[i + ( 2 + k )]]
    for i in range( len( inputlist ) - ( 3 + k ) ):
        print [inputlist[k], inputlist[i + ( 2 + k )], inputlist[i + ( 3 + k )]]
    for i in range( len( inputlist ) - ( 4 + k ) ):
        print [inputlist[k], inputlist[i + ( 2 + k )], inputlist[i + ( 3 + k )], inputlist[i + ( 4 + k )]]
Run Code Online (Sandbox Code Playgroud)

我需要跳过模式,1,2,3 - > 1,3 1,2,3,4 - > [1,3],[1,4],[2,4]

即第一元素,第三元素等.

如何概括这个?感谢帮助

ffe*_*rri 5

尝试用言语描述你的问题.

从我的例子中我理解:

def good(x): return x[0]+1!=x[1] and all(i+1==j for i,j in zip(x[1:],x[2:]))

from itertools import combinations
[i for j in range(2,5) for i in filter(good, combinations(l,j))]
Run Code Online (Sandbox Code Playgroud)

[(0,2),(0,3),(0,4),(0,5),(1,3),(1,4),(1,5),(2,4),( 2,5),(3,5),(0,2,3),(0,3,4),(0,4,5),(1,3,4),(1,4,5) ,(2,4,5),(0,2,3,4),(0,3,4,5),(1,3,4,5)]