求解释此代码
[ i for i in range(1, 100) if not(i%3)] 本帖最后由 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: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
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前面的那个 永远的渣滓 发表于 2020-4-6 18:48
这最前面的 i 有什么用?就是在for前面的那个
是一个变量 zltzlt 发表于 2020-4-6 18:49
是一个变量
这种语句的语法是什么,能举个例子吗? 永远的渣滓 发表于 2020-4-6 18:52
这种语句的语法是什么,能举个例子吗?
>>> # 遍历 range(5),并把它的每一个元素都添加进列表里
>>> # 遍历 range(10),它的某一个元素大于 5 就添加进列表里
zltzlt 发表于 2020-4-6 18:54
谢了 zltzlt 发表于 2020-4-6 18:54
哎,再问一下这个是几元操作? 永远的渣滓 发表于 2020-4-6 19:27
哎,再问一下这个是几元操作?
这不是运算符,没有几元的说法 zltzlt 发表于 2020-4-6 19:29
这不是运算符,没有几元的说法
我看三元操作符和这个很像small = x if (x < y and x < z) else (y if y < z else z) 永远的渣滓 发表于 2020-4-6 19:37
我看三元操作符和这个很像
确实很像,但不一样 zltzlt 发表于 2020-4-6 19:37
确实很像,但不一样
的本质其实是
>>> list1=[]
>>> for i in range(5):
list1.append(i)
>>> list1
对吗? 永远的渣滓 发表于 2020-4-6 19:42
的本质其实是
对吗?
是的
页:
[1]