我想为我的 Python 代码使用内置的 sort() 函数进行自定义排序,但可以根据两个值对列表进行排序。我要排序的列表结构为一个元组列表,每个元组包含 2 个整数。我要做的排序是根据每个元组的第一个整数对元组列表进行排序,但是如果两个第一个整数并列,它指的是它们的第二个整数,这是唯一的,因此不会相同。我想使用内置 sort() 函数的速度,但能够以这种方式排序。非常感谢任何和所有帮助!
问问题
143 次
2 回答
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()
接受一个可迭代对象,并返回一个全新的列表对象。
例如:
>>> 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()
更安全。
于 2013-01-24T02:46:45.883 回答
0
您刚刚描述了 list.sort() 方法的确切行为,因此一旦您将元组放入列表中,只需调用不带参数的列表的排序方法 (l.sort),它将按所需顺序放置。
当需要更复杂的排序时,您可以将“键函数”作为命名参数 key 传递。该函数应用于列表的每个元素以生成一个排序键,然后元素按照它们的排序键的顺序进行排序。
当您需要列表的排序副本时, sorted 内置函数很方便 - 它只是为您省去了创建副本然后调用其排序方法的麻烦。
于 2013-01-24T03:01:52.653 回答