我想为使用内置sort()函数的Python代码进行自定义排序,但可以根据两个值对列表进行排序。我想要排序的列表被构造为元组列表,每个元组包含2个整数。我想要做的是根据它们的每个第一个整数对元组列表进行排序,但是如果两个第一个整数被绑定,则它指的是它们的第二个整数,它是唯一的,因此不会相同。我想使用内置的sort()函数的速度,但能够以这种方式排序。任何和所有的帮助都非常赞赏!
答案 0 :(得分:2)
内置sorted
可以做到这一点。
>>> l = [(1, 1), (1, 2), (2, 5), (2, 4)]
>>> sorted(l)
[(1, 1), (1, 2), (2, 4), (2, 5)]
sort()
和sorted()
之间的区别在于sort()
修改了给定的列表(因此,任何其他共享其结构的列表),而sorted()
接受一个iterable,并返回一个全新的列表对象。
例如:
>>> 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()
更安全。
答案 1 :(得分:0)
您刚刚描述了list.sort()方法的确切行为,因此一旦您在列表中有元组,只需调用列表的排序方法(l.sort),不带参数,它将被放入期望的顺序。
当需要更复杂的排序时,您可以将“key function”作为命名参数key传递。该函数应用于列表的每个元素以生成排序键,然后元素按其排序键的顺序排序。
当您需要列表的排序副本时,排序的内置函数很方便 - 它只是省去了创建副本然后调用其排序方法的麻烦。