|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- m1= [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],]
- #目的是将3*4的矩阵转换为4*3的矩阵
- m2=[]
- #设定一个空列表
- for i in range(4):
- #第一个for循环,目的为第二个for循环创建索引值
- temp=[]
- m2.append(temp)
-
- #将完成第二个for循环的m1中每个元素的第i个元素的集合temp添加到m2末尾
- for row in m1:
- #第二个for循环,目的为遍历m1的元素并根据第一个for循环给的索引值
- temp.append(row[i])
- #将m1中所有元素的第i个元素添加到temp中
- print(m2)
- m3=[[row[i] for row in m1] for i in range(4)]
- print(m3)
复制代码
输出结果如下
- [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
- [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
- >>>
复制代码
这是我在还原列表推导式时遇到的问题,求大佬们解答
问题1:在执行第一个for循环时,为何m2没有将temp添加到m2中?即为什么m2第0个元素不是空列表?
如果在for循环外部添加temp=[],并且将第一个for循环中 temp=[] 和 m2.append(temp) 的顺序调反的话,则m2第0个元素会为空列表,这是为什么?
问题2:嵌套的列表推导式是否是按照从左到右,从外层到内层的方式嵌套的?
如果有括号的话,比如m3的 [row[i] for row in m1] 这种列表的中括号是否可以理解为平常的小括号?即有‘括号’的为内层,外层继续按照从左到右的的方式嵌套?
或者此处的 [row[i] for row in m1] 是否可以理解为 list( row[i] for row in m1) 即优先运算函数的为内层? |
|