在Python列表理解多个if条件(Multiple IF conditions in a pyth

2019-07-29 02:51发布

我想知道,是有可能把多if在列表解析条件? 我没有找到的文档这样的事。

我希望能够做这样的事

ar=[]
for i in range(1,n):
  if i%4 == 0: ar.append('four')
  elif i%6 == 0: ar.append('six')
  else: ar.append(i)

使用列表理解。 我该怎么做?

这甚至可能吗? 如果它不是,这将是最优雅(Python化)的方式来做到这一点?

Answer 1:

怎么样

ar = [('four' if i % 4 == 0 else ('six' if i % 6 == 0 else i)) for i in range(1, n)]

例如,如果n = 30 ,这是

[1, 2, 3, 'four', 5, 'six', 7, 'four', 9, 10, 11, 'four', 13, 14, 15, 'four', 17, 'six', 19, 'four', 21, 22, 23, 'four', 25, 26, 27, 'four', 29]

ETA:这里是你如何可以申请条件的列表:

CONDITIONS = [(lambda i: i % 4 == 0, "four"), (lambda i: i % 6 == 0, "six"),
              (lambda i: i % 7 == 0, "seven")]

def apply_conditions(i):
    for condition, replacement in CONDITIONS:
        if condition(i):
            return replacement
    return i

ar = map(apply_conditions, range(0, n))


Answer 2:

你可以把你的逻辑在一个单独的功能,再有该功能的可读性沿列表理解的风采:

def cond(i):
    if i % 4 == 0: return 'four'
    elif i % 6 == 0: return 'six'

    return i

l=[cond(i) for i in range(1,n)]


Answer 3:

ar = ["four" if i%4==0 else "six" if i%6==0  else i for i in range(1,30)]


文章来源: Multiple IF conditions in a python list comprehension