列表推导:如何为两个"lists"中的项目匹配的 x 的每个循环迭代生成一个新列表?


allDasTickets = ["9255955", "9255958", "9255960", "9255977"]
[j for j in allDasTickets for x in allDasTickets if x != j]

所以我得到了以下列表的列表:

['9255958', '9255960', '9255977']
['9255955', '9255958', '9255977']
['9255958', '9255960', '9255977']
['9255955', '9255958', '9255960']

即缺少匹配列表的列表(我希望这就是我上面放的)

你忘了内括号。您需要它们,因为您正在尝试生成列表列表,而不仅仅是平面列表。

allDasTickets = ["9255955", "9255958", "9255960", "9255977"]
[[j for j in allDasTickets if x != j] for x in allDasTickets]

收益 率

[['9255958', '9255960', '9255977'],
 ['9255955', '9255960', '9255977'],
 ['9255955', '9255958', '9255977'],
 ['9255955', '9255958', '9255960']]

反转有效。您给定的输出已['9255958', '9255960', '9255977']两次并省略['9255955', '9255960', '9255977'].

import itertools
allDasTickets = ["9255955", "9255958", "9255960", "9255977"]
for t in itertools.combinations(reversed(allDasTickets), len(allDasTickets) - 1):
    print(list(reversed(t)))

指纹:

['9255958', '9255960', '9255977']
['9255955', '9255960', '9255977']
['9255955', '9255958', '9255977']
['9255955', '9255958', '9255960']

最新更新