在Python列表理解中与if / elif语句一起使用for循环

时间:2019-06-25 20:31:40

标签: python list-comprehension

我正在尝试将此for循环转换为列表理解:

a = [1,2,3,4,5,6,7,8,9]
result = []
for i in a:
    if i <= 3:
        result.append(1)
    elif i > 4 and i < 7:
        result.append(2)

我已经尝试过了

[1 if i <= 3 else 2 if i > 3 and i < 7 for i in a]

抱怨

File "<ipython-input-155-eebf07a9e0d8>", line 2
    [1 if i <= 3 else 2 if i > 3 and i < 7 for i in a]
                                             ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:7)

列表理解:

添加更多条件:D(不,这真的很混乱)

[
    1 if i <= 3 else 2
    for i in a
    if i != 4 and i < 7
]

我们怎么到这里的?

  

基本列表组合:[EXPRESSION for TARGET in ITERABLE if CONDITION]

     

三元表达式:(IF_TRUE if CONDITION else IF_FALSE)

  1. 进入for循环。非常简单for i in a
  2. 添加条件以过滤掉将被忽略的项目。一旦超过CONDITION,列表中的那个位置就必须有一个项目。在这种情况下,我们不希望i是4或大于7。if i != 4 and i < 7
  3. 用物品做您需要的事情。在这种情况下,如果1小于或等于4,我们希望i。否则,我们将取2。1 if i <= 3 else 2。注意:这是一个三元表达式。检查出来!