我想爲我的Python代碼使用內置的sort()函數進行自定義排序,但可以基於兩個值對列表進行排序。我想要排序的列表被構造成一個元組列表,每個元組包含2個整數。我想排序的是根據每個第一個整數對元組列表進行排序,但是如果兩個第一個整數連接起來,它將引用它們的第二個整數,這是唯一的,因此不會相同。我想使用內置的sort()函數的速度,但能夠以這種方式進行排序。任何和所有的幫助非常讚賞!自定義Python排序:雙優先
回答
建在sorted
這樣做。
>>> l = [(1, 1), (1, 2), (2, 5), (2, 4)]
>>> sorted(l)
[(1, 1), (1, 2), (2, 4), (2, 5)]
sort()
和sorted()
之間的差別在於sort()
修改給定列表(因此,正在共享其結構的任何其他列表),而sorted()
接受一個可迭代,並返回一個全新的列表對象。
例如:
>>> a = list("alphabet")
>>> a
['a', 'l', 'p', 'h', 'a', 'b', 'e', 't']
>>> b = a
>>> b
['a', 'l', 'p', 'h', 'a', 'b', 'e', 't']
>>> b.sort()
>>> #this has modified the shared structure
>>> a
['a', 'a', 'b', 'e', 'h', 'l', 'p', 't']
與之相對sorted()
>>> c = list("alphabet")
>>> d = c
>>> sorted(d)
['a', 'a', 'b', 'e', 'h', 'l', 'p', 't']
>>> c
['a', 'l', 'p', 'h', 'a', 'b', 'e', 't']
sorted()
更安全。
我想你的意思是'sorted()'。 – Blender
有什麼區別? – user1998665
'sort'不是全局函數。你可能意思是'l.sort()'。不同之處在於'l.sort()'對列表進行了排序,而'sorted(l)'返回了一個新列表,並對這些列表進行了排序。 – bogatron
你剛剛描述了list.sort()方法的確切行爲,所以一旦你在列表中存在元組,只需調用沒有參數的列表的排序方法(l.sort),它將被放入所需的順序。
當需要更復雜的排序時,您可以傳遞一個「鍵函數」作爲命名參數key。該函數應用於列表中的每個元素以生成排序鍵,然後按排序鍵的順序對元素進行排序。
當您需要列表的已分類副本時,已排序的內置函數很方便 - 它簡單地爲您節省創建副本然後調用其排序方法的麻煩。
- 1. Rails:自定義排序和模型優先級
- 2. 優先級隊列與自定義排序
- 3. JavaScript自定義排序功能,優先考慮一個字母
- 4. WordPress自定義SQL案例排序優先
- 5. Python自定義排序
- 6. python排序列表 - 給予優先
- 7. WordPress的 - 查詢自定義字段和排序先入先出
- 8. 優先級隊列自定義比較
- 9. 按優先級排序datagridview
- 10. 基於一個屬性的自定義優先級對數組進行排序
- 11. Python:自定義排序列表
- 12. 在Python 3中自定義排序
- 13. 自定義排序
- 14. 排序具有優先級的雙向單元連接
- 15. MS訪問:排名/優先級排序
- 16. 自定義排列python?
- 17. ngTable - 定義自定義排序次序
- 18. 定義自定義排序順序
- 19. 類定義自定義排序順序
- 20. 通過自定義排序自定義排序
- 21. 自定義排序Groovy JSONArray - 自定義值首先,然後按字母順序排列
- 22. 自定義排序與插入排序
- 23. Python的優先
- 24. 雙重優先級隊列
- 25. 自定義數組排序
- 26. 列表自定義排序
- 27. DataGridView自定義排序WinForm
- 28. Perl自定義排序
- 29. 自定義排序在JavaScript
- 30. Cloudant自定義排序
排序()可能更適合在這裏,但我不知道區別! – user1998665
'sorted()'返回原始列表的新排序副本,而'sort()'修改原始列表。 –