排列生成器中的if条件

时间:2018-10-31 11:56:52

标签: python python-2.7 permutation

我有2和3组合的排列,我喜欢创建函数或算法而不是if-condition,因为您可以看到我的代码越来越大。 这是我的代码:

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'

如果条件将根据if条件的发现采取措施在每个https链接中冲浪,那么我已删除了该部分以使其更具可读性。 如何为3个排列创建条件?

1 个答案:

答案 0 :(得分:2)

您甚至不需要功能。您可以用单个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))