python列表理解中的多个IF条件

发布于 2021-01-29 15:06:37

我想知道,是否可以将多个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)

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

这有可能吗?如果不是,那么最优雅(pythonic)的方法是什么呢?

关注者
0
被浏览
81
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    怎么样

    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]
    

    预计到达时间:这是您可以应用条件列表的方式:

    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))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看