永远的渣滓 发表于 2020-4-6 18:31:18

求解释此代码

[ i for i in range(1, 100) if not(i%3)]

qiuyouzhi 发表于 2020-4-6 18:32:43

本帖最后由 qiuyouzhi 于 2020-4-6 18:34 编辑

拆开来看:
res = []
for i in range(1, 100):
    if not (i % 3):
      res.append(i)
通常,列表推导式的开头是一个变量,
用于放进列表里(和上面代码中的res.append(i)意义相同)
然后就和倒装句一样:
正常版本:
在1到100范围中,如果i无法除以3,则把i放进res列表里
推导式:
把i放进res列表里, 在1到100范围中,如果i无法除以3.

zltzlt 发表于 2020-4-6 18:33:16

本帖最后由 zltzlt 于 2020-4-6 18:35 编辑

遍历 range(1, 100),如果 i % 3 为 0(表示 i 是 3 的倍数),则将 i 添加进列表里。等价于以下代码:

>>> list1 = []
>>> for i in range(1, 100):
        if not (i % 3):            # 如果 i 是 3 的倍数
                list1.append(i)    # 将 i 添加进 list1 里

               
>>> list1

永远的渣滓 发表于 2020-4-6 18:48:33

zltzlt 发表于 2020-4-6 18:33
遍历 range(1, 100),如果 i % 3 为 0(表示 i 是 3 的倍数),则将 i 添加进列表里。等价于以下代码:

[ i for i in range(1, 100) if not(i%3)]
这最前面的 i 有什么用?就是在for前面的那个

zltzlt 发表于 2020-4-6 18:49:33

永远的渣滓 发表于 2020-4-6 18:48
这最前面的 i 有什么用?就是在for前面的那个

是一个变量

永远的渣滓 发表于 2020-4-6 18:52:47

zltzlt 发表于 2020-4-6 18:49
是一个变量

这种语句的语法是什么,能举个例子吗?

zltzlt 发表于 2020-4-6 18:54:01

永远的渣滓 发表于 2020-4-6 18:52
这种语句的语法是什么,能举个例子吗?

>>>     # 遍历 range(5),并把它的每一个元素都添加进列表里

>>>     # 遍历 range(10),它的某一个元素大于 5 就添加进列表里

永远的渣滓 发表于 2020-4-6 18:56:02

zltzlt 发表于 2020-4-6 18:54


谢了

永远的渣滓 发表于 2020-4-6 19:27:55

zltzlt 发表于 2020-4-6 18:54


哎,再问一下这个是几元操作?

zltzlt 发表于 2020-4-6 19:29:29

永远的渣滓 发表于 2020-4-6 19:27
哎,再问一下这个是几元操作?

这不是运算符,没有几元的说法

永远的渣滓 发表于 2020-4-6 19:37:24

zltzlt 发表于 2020-4-6 19:29
这不是运算符,没有几元的说法

我看三元操作符和这个很像small = x if (x < y and x < z) else (y if y < z else z)

zltzlt 发表于 2020-4-6 19:37:38

永远的渣滓 发表于 2020-4-6 19:37
我看三元操作符和这个很像

确实很像,但不一样

永远的渣滓 发表于 2020-4-6 19:42:20

zltzlt 发表于 2020-4-6 19:37
确实很像,但不一样


的本质其实是
>>> list1=[]
>>> for i in range(5):
        list1.append(i)       
>>> list1
对吗?

zltzlt 发表于 2020-4-6 19:46:53

永远的渣滓 发表于 2020-4-6 19:42
的本质其实是
对吗?

是的
页: [1]
查看完整版本: 求解释此代码