Это работает:
allDasTickets = ["9255955", "9255958", "9255960", "9255977"]
[[j for j in allDasTickets if x != j] for x in allDasTickets]
['9255958', '9255960', '9255977']
['9255955', '9255958', '9255977']
['9255958', '9255960', '9255977']
['9255955', '9255958', '9255960']
Но это не так:
allDasTickets = ["9255955", "9255958", "9255960", "9255977"]
[for x in allDasTickets [j for j in allDasTickets if x != j]]
File "<stdin>", line 1
[for x in allDasTickets [j for j in allDasTickets if x != j]]
^
Я не понимаю, почему вы ожидали, что это сработает. Синтаксис просто не определен таким образом. Это [a for b in c], а не [for b in c a].
@ user2357112 Не думаю, что я ожидал, что это сработает, просто я продолжаю лажать и гадать, почему. Если у меня есть причина, по которой он облажался, я лучше ее запомню.
@coldspeed Вау, для меня большая честь получить от вас положительный голос (если это вы)
Я всегда поддерживаю вопросы, на которые отвечаю (потому что это означает, что на этот вопрос стоит ответить, по крайней мере, в моих глазах) :-)






Для понимания списков синтаксис
[ <something> for elem in sequence]
Где <something> может быть списком понимания. Между тем, для понимания вложенных циклов (но не вложенных списков) синтаксис
[<something> for elem in outerseq for elem2 in innerseq]
Таким же образом и так далее.
Связанный: stackoverflow.com/questions/53939433/…