一个简单的列表推导式就可以完成它。
>>> samplelist = [100,101,102,103,104,105,106,107,108,109]
>>> [[el for el in samplelist if el is not i] for i in samplelist]
[[101, 102, 103, 104, 105, 106, 107, 108, 109],
[100, 102, 103, 104, 105, 106, 107, 108, 109],
[100, 101, 103, 104, 105, 106, 107, 108, 109],
[100, 101, 102, 104, 105, 106, 107, 108, 109],
[100, 101, 102, 103, 105, 106, 107, 108, 109],
[100, 101, 102, 103, 104, 106, 107, 108, 109],
[100, 101, 102, 103, 104, 105, 107, 108, 109],
[100, 101, 102, 103, 104, 105, 106, 108, 109],
[100, 101, 102, 103, 104, 105, 106, 107, 109],
[100, 101, 102, 103, 104, 105, 106, 107, 108]]
基本上,它会扫描列表,并为每个元素生成整个列表,不包括当前元素。
或者,您可以使用生成器表达式。
>>> g = ([el for el in samplelist if el is not i] for i in samplelist)
>>> for x in g:
... print(x)
...
[101, 102, 103, 104, 105, 106, 107, 108, 109]
[100, 102, 103, 104, 105, 106, 107, 108, 109]
[100, 101, 103, 104, 105, 106, 107, 108, 109]
[100, 101, 102, 104, 105, 106, 107, 108, 109]
[100, 101, 102, 103, 105, 106, 107, 108, 109]
[100, 101, 102, 103, 104, 106, 107, 108, 109]
[100, 101, 102, 103, 104, 105, 107, 108, 109]
[100, 101, 102, 103, 104, 105, 106, 108, 109]
[100, 101, 102, 103, 104, 105, 106, 107, 109]
[100, 101, 102, 103, 104, 105, 106, 107, 108]
根据您的新要求进行编辑(即必须包含跳过的元素):
>>> g = ([i, [el for el in samplelist if el is not i]] for i in samplelist)
>>> for x in g:
... print(x)
...
[100, [101, 102, 103, 104, 105, 106, 107, 108, 109]]
[101, [100, 102, 103, 104, 105, 106, 107, 108, 109]]
[102, [100, 101, 103, 104, 105, 106, 107, 108, 109]]
[103, [100, 101, 102, 104, 105, 106, 107, 108, 109]]
[104, [100, 101, 102, 103, 105, 106, 107, 108, 109]]
[105, [100, 101, 102, 103, 104, 106, 107, 108, 109]]
[106, [100, 101, 102, 103, 104, 105, 107, 108, 109]]
[107, [100, 101, 102, 103, 104, 105, 106, 108, 109]]
[108, [100, 101, 102, 103, 104, 105, 106, 107, 109]]
[109, [100, 101, 102, 103, 104, 105, 106, 107, 108]]