если условие в генераторе перестановок - PullRequest
0 голосов
/ 31 октября 2018

У меня есть перестановка с комбинацией 2 и 3, и мне нравится создавать функцию или алгоритм вместо условия if, как вы можете видеть, мой код становится большим. Вот мой код:

esh = "e.sh"
gb = "g.b"
km = "k.m"
iv = "i.v"

perm2 = permutations([esh,gb,km,iv],2)
perm3 = permutations([esh,gb,km,iv],3)
for i in list(perm2):
    print i
    if esh in i and gb in i:
        print 'esh-gb'
    elif esh in i and km in i:
        print 'esh - km'
    elif esh in i and iv in i:
        print 'esh - iv'
    elif gb in i and km in i:
        print 'gb - km'
    elif gb in i and iv in i:
        print 'gb - iv'
    elif km in i and iv in i:
        print 'km - iv'
    elif iv in i:
        print 'iv'

Если условия будут действовать для просмотра в каждой https-ссылке на основе результатов условия if, я удалил эту часть, чтобы сделать ее более читабельной. Как я могу создать условие для 3 перестановки?

1 Ответ

0 голосов
/ 31 октября 2018

Вам даже не нужна функция. Вы можете заменить все if условия одним print:

for i in list(perm2):
    print(i)
    print(' - '.join(i))

#  ('e.sh', 'g.b')
#  e.sh - g.b
#  ('e.sh', 'k.m')
#  e.sh - k.m
.
.
.

В случае, если esh, gb, km, iv являются произвольными объектами, а не строками в вашем фактическом коде, вы можете просто реализовать __str__ и затем сделать print(' - '.join(str(e) for e in i))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...