无法理解这句flatten = [col for row in matrix for col in row]
救命matrix = [, , ]
flatten =
我知道应该是先算第一个forin
for row in matrix:
然后 for col in row:
最后赋值给col成一行
但我就是想不明白是怎么遍历的
for col in row:是列中的行?总觉得照这个式子,先遍历第一列也就是0列,0列然后第一行第二行,最后结果是147258369 这段代码的含义是将一个二维数组(matrix)压缩成一维数组(flatten),使得数组中的元素按照行的顺序排列,即先将矩阵的第一行的元素加入到结果中,然后是第二行,以此类推,最终得到的是一个长度为9的一维数组。
具体地,这一行代码使用了嵌套的列表推导式。列表推导式是一种简洁的构建列表的方法,可以快速地生成一个列表,而嵌套的列表推导式则可以用来构建多维列表。
在这个嵌套的列表推导式中,第一个for循环是对matrix中的每一行进行遍历,即将每一行提取出来作为row。接下来的for循环是对row中的每一个元素进行遍历,即将row中的每个元素提取出来作为col。最终,将每个col添加到结果列表中。
换句话说,这一行代码等价于下面的代码:
flatten = []
for row in matrix:
for col in row:
flatten.append(col)
对于矩阵 matrix = [, , ],这个代码的执行顺序是从左到右,从上到下遍历矩阵中的元素。因此,得到的结果是 。
chatgpt的解释
https://i.328888.xyz/2023/04/07/iNp34t.png wuliangtdi 发表于 2023-4-7 08:48
chatgpt的解释
更具体的解释
https://i.328888.xyz/2023/04/07/iNpdux.png isdkz 发表于 2023-4-7 07:42
这段代码的含义是将一个二维数组(matrix)压缩成一维数组(flatten),使得数组中的元素按照行的顺序排列 ...
谢谢~之前就是对这一点搞不明白,直到看到这句话。
第一个for循环是对matrix中的每一行进行遍历,即将每一行提取出来作为row。接下来的for循环是对row中的每一个元素进行遍历,即将row中的每个元素提取出来作为col。 wuliangtdi 发表于 2023-4-7 08:52
更具体的解释
谢谢~这么先进的用上chatGPT了{:9_236:}
就是本来砍了先提取每一行作为列,然后对列进行遍历转换为行有点明白,看了智能的回答又晕了,我再仔细想想,多谢解释。上面的回复早,我按时间顺序先设为标准答案啦 isdkz 发表于 2023-4-7 07:42
这段代码的含义是将一个二维数组(matrix)压缩成一维数组(flatten),使得数组中的元素按照行的顺序排列 ...
为什么生成了123这些数字,刚学,实在想不通{:10_250:} {:5_103:}{:5_91:}{:5_98:} 学完派神就不怕 发表于 2023-5-19 17:57
为什么生成了123这些数字,刚学,实在想不通
不行先强行记住把,机器规则既然这样,说明这种格式能得到最后相应的结果而不出差错,照着抄机器能理解执行就行了
页:
[1]