【问题标题】:Use a 'for' loop with if/elif statement in Python list comprehension [duplicate]在 Python 列表理解中使用带有 if/elif 语句的“for”循环 [重复]
【发布时间】:2019-06-25 20:31:40
【问题描述】:

我正在尝试将此 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

【问题讨论】:

  • 哦,还有,循环与列表 comp 不同。尝试为i 插入 4。
  • if i &gt; 4 and i &lt; 7 => if 4 &lt; i &lt; 7 使用链式比较

标签: python list-comprehension


【解决方案1】:

列表理解:

添加更多条件: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 &lt; 7
  3. 对项目做你需要的事情。在这种情况下,如果i 小于或等于4,我们需要1。否则,我们将取2。1 if i &lt;= 3 else 2。注意:这是一个三元表达式。检查出来!

【讨论】:

  • 可以对过滤器/转换部分进行更多解释,但是是的,正确
  • 感谢您的详细解释,这非常有效。
猜你喜欢
  • 2016-02-16
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多