是否有一种简单的方法可以对列表中的列表进行排序,使值从最小到最大,反之亦然?到目前为止,我只能找到有关根据主要价值排序列表的信息.
这是一个例子:
data = [[8,7], [10,5,], [8,10]] >> [[7,8], [5,10], [8,10]
blacksite.. 10
使用列表推导对每个元素(每个list
对象)进行排序data
:
data = [sorted(x) for x in data]
data
就是现在:
[[7, 8], [5, 10], [8, 10]]
你也可以这样做:
map(sorted, data)
然后使用list
该map
对象实际将其转换为列表...
使用列表推导对每个元素(每个list
对象)进行排序data
:
data = [sorted(x) for x in data]
data
就是现在:
[[7, 8], [5, 10], [8, 10]]
你也可以这样做:
map(sorted, data)
然后使用list
该map
对象实际将其转换为列表...
你有一个列表列表,这里没有涉及元组,你也可以使用内置方法map
和sorted
:
>>> data = [[8,7], [10,5,], [8,10]] >>> >>> list(map(sorted, data)) [[7, 8], [5, 10], [8, 10]]
在Python3中,map
返回一个迭代器,所以如果你需要它作为一个列表,你需要将它转换回来list
,否则,如果你在一个循环中使用它,那么就不需要将它转换为一个列表.它以这种方式节省了内存.
编辑:
回复您的评论,您可以执行以下操作:
>>> def f(lst): lst = sorted(lst) return(lst[0], lst) >>> print(*map(f, data)) (7, [7, 8]) (5, [5, 10]) (8, [8, 10])
或者更紧凑但可读性更低:
>>> print(*map(lambda lst: '{} - {}'.format(lst[0], lst), map(sorted, data)), sep='\n') 7 - [7, 8] 5 - [5, 10] 8 - [8, 10]