python list map成员排序_python – 同时对多个列表进行排序
簡短的回答
a_s, b_s, c_s = map(list, zip(*sorted(zip(a, b, c), reverse=True)))
答案很長
首先,您必須壓縮三個列表,創建一個項目列表:
>>> a = [0.3, 1.5, 0.2, 2.6]
>>> b = [1, 2, 3, 4]
>>> c = [0.01, 0.02, 0.03, 0.04]
>>> z = zip(a, b, c)
>>> z
[(0.3, 1, 0.01), (1.5, 2, 0.02), (0.2, 3, 0.03), (2.6, 4, 0.04)]
然后,您對此列表進行排序.元組列表按其第一個元素排序(當第一個元素相等,第二個元素使用時,依此類推):
>>> zs = sorted(z, reverse=True)
>>> zs
[(2.6, 4, 0.04), (1.5, 2, 0.02), (0.3, 1, 0.01), (0.2, 3, 0.03)]
然后你“解壓縮”列表.解壓縮與使用每個元組作為參數調用zip相同,這是通過使用星形語法實現的:
>>> u = zip(*zs)
>>> u
[(2.6, 1.5, 0.3, 0.2), (4, 2, 1, 3), (0.04, 0.02, 0.01, 0.03)]
你得到一個元組列表,但你想要列表.因此,您將列表構造函數映射到以下項目:
>>> u
[(2.6, 1.5, 0.3, 0.2), (4, 2, 1, 3), (0.04, 0.02, 0.01, 0.03)]
>>> map(list, u)
[[2.6, 1.5, 0.3, 0.2], [4, 2, 1, 3], [0.04, 0.02, 0.01, 0.03]]
然后,您可以將列表解壓縮到變量中:
>>> a_s, b_s, c_s = map(list, u)
意見
排序時,您可以明確指出將用于排序的項目,而不是依賴于元組的默認排序:
>>> from operator import itemgetter
>>> sorted(z, key=itemgetter(1)) # Sort by second item
[(0.3, 1, 0.01), (1.5, 2, 0.02), (0.2, 3, 0.03), (2.6, 4, 0.04)]
>>> sorted(z, key=itemgetter(2)) # Sort by third item
[(0.3, 1, 0.01), (1.5, 2, 0.02), (0.2, 3, 0.03), (2.6, 4, 0.04)]
總結
以上是生活随笔為你收集整理的python list map成员排序_python – 同时对多个列表进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 编写 欢迎你_社团联合会——j
- 下一篇: java 删除指定目录_Java 删除目