|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
matrix = [[1,3,2],[5,4,6],[8,7,9]]
print(list(map(sorted,matrix)))
print(list(map(sorted,matrix[0],matrix[1],matrix[2])))
程序结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Traceback (most recent call last):
File "D:/PYTHON/py_learn.PY", line 3, in <module>
print(list(map(sorted,matrix[0],matrix[1],matrix[2])))
TypeError: 'int' object is not iterable
疑问:
1.为什么第二个print报错呢?
2.为什么map函数直接对列表的列表排序呢?我直接用sorted(metrix)返回的结果是对每个列表排序。想请教程序的逻辑。
感谢!!
1、为什么第二个print报错呢?
第二个print报错是因为map函数的使用方法不正确。
map函数的第一个参数应该是一个函数,而后面的参数是可迭代的数据结构。
在你提供的代码中,你试图将matrix[0], matrix[1], matrix[2]作为后续的参数传递给map函数,
但实际上这里应该传入一个可迭代的数据结构。这里你可以尝试使用zip函数。正确的代码如下:
- print(list(map(sorted, zip(matrix[0], matrix[1], matrix[2]))))
复制代码
2、为什么map函数直接对列表的列表排序呢?我直接用sorted(metrix)返回的结果是对每个列表排序。想请教程序的逻辑。
当你使用map函数时,你将sorted函数应用于matrix列表的每一个元素。这里的每一个元素是一个列表,
所以map函数会将sorted函数应用于每个子列表,从而得到按元素升序排列的子列表。所以结果是:
- [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
复制代码
如果你直接对matrix使用sorted函数,如sorted(matrix),那么sorted函数会按照子列表的第一个元素对子列表进行排序。
因为matrix的子列表已经按照第一个元素升序排列,所以sorted(matrix)的结果与matrix相同。
|
|