Составление списка: вложенный цикл с оператором добавления - PullRequest
0 голосов
/ 21 марта 2019

У меня есть этот кусок кода Python

xy_tups = []
for x in ['m', 't', 'b']:
    for y in ['b', 't', 'e']:
        if x != y:
            xy_tups.append ((x, y))

, который выводит это: [('m', 'b'), ('m', 't'), ('m', 'e'), ('t', 'b'), (' t ',' e '), (' b ',' t '), (' b ',' e ')]

Мне нужно создать версию этого кода, предназначенную для составления списков, но у меня возникли проблемы с ее выяснением. Я попробовал эти методы

 xy_tups = [x for x in ['m', 't', 'b'] and y for y in ['b', 't', 'e'] if x != y] 

 xy_tups = [x for y in ['m', 't', 'b'] and y for x in ['b', 't', 'e'] if x != y]

и я попытался добавить xy_tups.append (x, y) в код понимания списка, но я получаю ошибки. Я понимаю, что каждая буква в списке x объединяется с каждой буквой списка y один раз, но я не могу понять, как составить понимание списка.

Ответы [ 2 ]

1 голос
/ 21 марта 2019
xy_tups = [(x,y) for x in ['m , 't', 'b'] for y in ['b', 't', 'e'] if x != y ]
print(xy_tups)

Выход: [('m', 'b'), ('m', 't'), ('m', 'e'), ('t', 'b'), ('t', 'e') , ('b', 't'), ('b', 'e')]

0 голосов
/ 21 марта 2019
[(a, b) for a in ['m', 't', 'b'] for b in ['b', 't', 'e'] if a != b]

выходы

[('m', 'b'), ('m', 't'), ('m', 'e'), ('t', 'b'), ('t', 'e'), ('b', 't'), ('b','e')]
...