gpt4 book ai didi

Python列表推导式的误解

转载 作者:行者123 更新时间:2023-12-03 00:21:28 25 4
gpt4 key购买 nike

这个例子似乎有问题:

item = [x**2 if x %2 == 0 for x in range(10)]

但我可以这样写:

item = [x**2 if x % 2 == 0 else x**3 for x in range(10)]

或者:

item = [x**2 for x in range(10) if x % 2 == 0]

这里的顺序有多重要?为什么在第一个示例中我不能使用没有“else”的“if”?

最佳答案

此处 if 关键字有两种不同的、不相关的用法:

  1. 作为条件表达式的一部分,格式为 ... if ... else ...:

    item = [<b>x**2 if x % 2 == 0 else x**3</b> for x in range(10)]
  2. 作为列表理解的过滤器,格式为 if ...:

    item = [x**2 for x in range(10) <b>if x % 2 == 0</b>]

在第一个示例中,您有一个格式错误的条件表达式,缺少其else。此外,语义也不同。在 1) 中,您会在列表中为 range(10) 中的每个值获取一些值。在 2) 中,您获得偶数值列表中的值。

关于Python列表推导式的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59922902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com