使用自動排列對並行列表進行排序
問題陳述
問題陳述問題陳述
問題陳述
list1, list2 = zip(*sorted(zip(list1, list2))) # Alternatively, for in-place sorting: # tups = zip(list1, list2) # tups.sort() # list1, list2 = zip(*tups)
解決方案
解決此問題的一種常見方法涉及“裝飾、排序、取消裝飾”習慣用法。使用Python的內建zip函數,我們可以有效地將兩個清單的元素組合成元組,並根據第一個清單中的值對這些元組進行排序。然後可以「取消修飾」這個元組的排序列表,以獲得所需的排序列表。tups = zip(list1, list2) tups.sort() zip(*tups)
優點和性能
這種方法優先考慮簡單性和簡潔性,尤其優先考慮是使用郵編功能。但是,對於小型列表,就地版本可能會稍快一些:對於較大的列表,單行版本在某些情況下可能表現更好。 替代方法如同評論中所提到的,還有其他方法,例如對索引進行排序或為排序提供自訂鍵函數 演算法。如果直接比較第二個清單中的元素有問題,這些替代方案可能是合適的。以上是如何對一個列表進行排序,同時保持另一個列表的並行順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!