Если условие в генераторе перестановок

У меня есть перестановка с комбинацией 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 перестановок?

0
0
91
1

Ответы 1

Вам даже не нужна функция. Вы можете заменить все условия 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))

Что, если я хочу действовать только при условии «esh - iv»? @Глубокое пространство

xhiza 31.10.2018 13:24

@EdisShabixhiza Вы можете добавить условия if, например print(' - '.join(str(e) for e in i if esh in i))

DeepSpace 31.10.2018 13:28

Другие вопросы по теме