hyjhyj 发表于 2022-8-30 19:19:48

列表课后习题

>>> matrix = [,
...         ,
...         ]
>>> Tmatrix = [ for row in matrix] for i in range(4)]
>>> Tmatrix
[, , , ]
行列的转换不理解
row【i】的意思是每一行吗,怎么就变成列了

编程追风梦 发表于 2022-8-30 19:19:49

本帖最后由 编程追风梦 于 2022-8-31 11:09 编辑

编程追风梦 发表于 2022-8-31 11:02
这三种方法看一下
刚才没说清楚,具体解释一下哈:
有列表如下:
matrix = [, , ]
行换列后的结构如下
[, , , ]


怎么做到的呢?有三种方法
方法一:嵌套的列表推导式
>>> matrix = [, , ]
>>> [ for row in matrix] for col in range(len(matrix))]
[, , , ]
>>>原理很简单:先循环列,在固定列上循环每一行

方法二:zip迭代 + map映射
咱们先分下类哈:
在python2中:
>>> matrix = [, , ]
>>> map(list, zip(*matrix))
[, , , ]
>>>>>> matrix = [, , ]
>>> list(map(list, zip(*matrix)))
[, , , ]
>>>原理也很清晰:先用zip并行送代每一个列表元素,然后再用map讲结果中的元组转成列表
顺便说一下,row【i】是每一行里面的元素


给我设个最佳答案吧,谢谢啦,不喜勿喷


ba21 发表于 2022-8-30 20:54:31

row【i】 是行中的每个元素。

hveagle 发表于 2022-8-31 07:12:01

小甲鱼的要求就是要把第1行变成第1列,第2行变成第2列......

wjf未完待续zyc 发表于 2022-8-31 09:05:12

我也有同样的问题

编程追风梦 发表于 2022-8-31 10:59:31

我来回答一下,你给我设个最佳答案呗

编程追风梦 发表于 2022-8-31 11:02:06

编程追风梦 发表于 2022-8-31 10:59
我来回答一下,你给我设个最佳答案呗

arr = [,,]

#方法1
ar2 =[]
for i in range(len(arr)):
    b =[]
    for j in range(len(arr)):
      b.append(arr)
    ar2.append(b)
print(ar2)

#方法2
ar2 = list(map(list,zip(*arr)))
print(ar2)

#方法3
ar2 = [ for row in arr] for i in range(len(arr)) ]
print(ar2)这三种方法看一下

编程追风梦 发表于 2022-8-31 11:10:25

编程追风梦 发表于 2022-8-31 11:08
本帖最后由 编程追风梦 于 2022-8-31 11:09 编辑

刚才没说清楚,具体解释一下哈:

@python爱好者.我说的对吗?请教一下,啊趁楼主没看到之前,如果不对赶紧告诉我{:10_266:}

python爱好者. 发表于 2022-8-31 12:04:42

编程追风梦 发表于 2022-8-31 11:10
@python爱好者.我说的对吗?请教一下,啊趁楼主没看到之前,如果不对赶紧告诉我

对是对,但是.......你确定楼主能理解?

编程追风梦 发表于 2022-8-31 12:28:56

python爱好者. 发表于 2022-8-31 12:04
对是对,但是.......你确定楼主能理解?

楼主不是说不明白吗?所以我就........应该能理解

编程追风梦 发表于 2022-8-31 12:29:49

python爱好者. 发表于 2022-8-31 12:04
对是对,但是.......你确定楼主能理解?

有最佳答案就行(不负责任的微笑{:10_256:})

编程追风梦 发表于 2022-8-31 12:31:06

python爱好者. 发表于 2022-8-31 12:04
对是对,但是.......你确定楼主能理解?

那个人就回了row【i】是行中的每个元素 你就给了两个贡献?
那楼主应该给我最佳答案+1000贡献值

wyh551202 发表于 2022-9-2 15:09:33

楼主,要是看不明白,可以尝试自己写for循环看下,我的解释如下{:10_256:}:
matrix = [,
            ,
            ]
# Tmatrix = [ for row in matrix] for i in range(4)]
# print(Tmatrix)
Tmatrix=[]
for i in range(4):
    print(f'获取子列表位置:{i}')
    Tmatrix1=[]#新的嵌套子列表
    for row in matrix:
      Tmatrix1.append(row)
    print(Tmatrix1)
    Tmatrix.append(Tmatrix1)
print(f'新获取的列表:{Tmatrix}')

编程追风梦 发表于 2022-9-3 08:50:08

wyh551202 发表于 2022-9-2 15:09
楼主,要是看不明白,可以尝试自己写for循环看下,我的解释如下:

也可以的

zhangjinxuan 发表于 2022-9-3 10:20:25


17778331438@163 发表于 2022-9-4 18:00:33

第一行变列

ll.pc 发表于 2022-9-4 21:02:48

这里是使用了列表推导式,所以变成了列表

ll.pc 发表于 2022-9-4 21:03:32

你可以去查看关于这推导式的扩充知识

hveagle 发表于 2022-9-11 12:56:14

楼主不看达!
楼主怎么聊!

编程追风梦 发表于 2022-9-12 19:57:08

谢谢
页: [1]
查看完整版本: 列表课后习题