python - 在 Python 列表理解中使用带有 if/elif 语句的 'for' 循环

标签 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

最佳答案

列表理解:

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

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

我们是怎么到这里的?

Basic list comp: [EXPRESSION for TARGET in ITERABLE if CONDITION]

Ternary expression: (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如果i小于或等于 4。否则,我们将取 2。1 if i <= 3 else 2 .注意:这是一个三元表达式。检查出来!

关于python - 在 Python 列表理解中使用带有 if/elif 语句的 'for' 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56761611/

相关文章:

python - 迭代特定列表的最快方法?

python,我无法在重新搜索后保存特殊字符,例如 θæŋ

python - 值(value)递减的产品

Python PYPY Cffi 与 Numpy 数组

python - 使用 elasticbeanstalk 部署 Flask 时出现 AWS mod_wsgi 错误

python : How to refer itself in the list comprehension?

python - 在遍历字典列表时避免 KeyError

python - 展平双重嵌套列表

python - 带有 pandas 数据帧的内部 Join 循环用于可能存在或不存在的各种组合

python - 在数据帧字典上生成平均值