时宇羽然 发表于 2021-2-18 10:55:29

有大佬能讲讲这个吗?


我知道这是个列表推导式,但是大佬能讲讲列表推导式的具体格式吗?

qq1151985918 发表于 2021-2-18 11:16:41

相当于lst = []
for x in range(1,100):
    if x % 3 == 0:
      lst.append(x)

逃兵 发表于 2021-2-18 11:32:07


大白话 列表中存储着变量x, x是由 range(1,100)迭代产生的,条件为 x%3==0
格式就是 [变量名 for 变量 in 迭代器 if 条件]
其中if 条件可以去掉
最简单的推导
>>>


加上条件
>>>


混合推导
>>> [ for x in range(3) for y in range(3)]
[, , , , , , , , ]

Python初学者8号 发表于 2021-2-21 09:12:40

我在研究列表解析式的时候,我领悟到一个道理就是,代码的简洁和可读性有时候背道而驰的。在讲那个三元表达式的时候就是这样了。
matrix = [
    ,
    ,
    ,
]


for row in matrix:
    for col in row:
      print(col)

ff =
复制代码


这循环看的很清楚啊,这样复杂的列表解析就是很难看的(至少目前是这样的)

不过很重的是,要理解列表解析式,很明显多看看循环就知道了。

所以,总结一下列表解析法的要点:
1.结合循环,循环一定是其基础!!就像a = b if 条件 else c 一样,必须理解其本身的样子
2.是为了从可迭代对象建立序列的时候才用这样的方法,更为简单
3.也有条件表达的 如
evens =
复制代码

4.切记可以不用太复杂了,两层我觉得就够了
关键词:可迭代,创建序列,循环
参考文献:https://www.cnblogs.com/amiza/p/10159293.html

紧急补充:元组不可以!!目前看来是只有可改变的序列才可以:集合,字典,列表

ps;看吧,掌握了循环就很快就知道怎么看这个列表解析了
list2 = []
for x in range(10):
    for y in range(10):
      if x %2 == 0:
            if y %2 != 0:
                list2.append((x,y))
print(list2)

list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
复制代码
页: [1]
查看完整版本: 有大佬能讲讲这个吗?