Python 为什么可以';我不能把这个单子分类吗?

Python 为什么可以';我不能把这个单子分类吗?,python,list,tuples,Python,List,Tuples,我想按从大到小的整数排序。在本例中,为5和66。但是它似乎不起作用。排序的函数返回一个新列表,因此您需要像这样分配函数的结果: statlist = [('abc',5,1), ('bzs',66,1), ... ] sorted(statlist, key=lambda x: int(x[1])) 您可以传递、键入和反转到.sort函数 new_list = sorted(statlist, key=lambda x: int(x[1])) 使用.sort方法进行就地排序: >&g

我想按从大到小的整数排序。在本例中,为5和66。但是它似乎不起作用。

排序的
函数返回一个新列表,因此您需要像这样分配函数的结果:

statlist = [('abc',5,1), ('bzs',66,1), ... ]
sorted(statlist, key=lambda x: int(x[1]))

您可以传递、键入和反转到.sort函数

new_list = sorted(statlist, key=lambda x: int(x[1])) 

使用
.sort
方法进行就地排序:

>>> s = [('xyz', 8, 1), ('abc',5,1), ('bzs',66,1) ]
>>> s = sorted(s, key=lambda x: int(x[1]))
>>> s.reverse()
>>> print s
[('bzs', 66, 1), ('xyz', 8, 1), ('abc', 5, 1)]
如果要使用排序后的
,请重新分配变量:

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist.sort(key=lambda x: int(x[1]))
对于降序排序,请使用
reverse

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]))
然后,最好使用
itemgetter
而不是
lambda

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]), reverse=True)

供就地分拣使用

from operator import itemgetter
statlist = [('abc',5,1), ('bzs',66,1), ... ]

# statlist.sort modifiest the statlist, sorted returns a new one
# reverse puts the largest items to the front
statlist.sort(key=itemgetter(1), reverse=True)
用于创建其他列表,使用已排序的数据

statlist.sort(key=lambda x: x[1])

针对alex的评论,他认为sorted()的工作方式“与sort函数类似”:

如果它“像排序函数一样”工作,它就不可能被放入库中

在任何情况下,都没有排序功能。。。您指的是列表对象的排序方法

使用交互式解释器进行简单演示:

otherlist = sorted( statlist, key=lambda x: x[1] )

这里有一个提示:寻找模式和相似之处,但始终验证您的直觉推断。您可能希望将这些想法应用于
reverse
reversed

嘿,当我将某个内容保存到数组时,我不会担心顺序,然后在最后使用
sorted()
例如
statlist=sorted(statlist)
如果您希望它从大到小
statlist=sorted(statlist,reverse=True)
这是从大到小的简单方法

我使用过的示例代码(只是摘录)


虽然我不同意OP的要求,但引用了“从大到小的整数”。与此无关,但有人能告诉我OP是什么意思吗?我在其他帖子中也看到过。谢谢原始海报。由于SO的工作方式类似于wiki,因此我们以这种方式来指代第一个用户,这将区分他所写的内容和已更正的内容。您所说的“似乎不起作用”是什么意思?请提供您实际遇到的错误回溯或具体问题。此外,周日下午有三个n00b性质的问题,我猜这是家庭作业。请把作业清楚地贴上标签。我忘了把新的单子和旧的单子放在一起。我认为它的工作原理类似于“排序”功能。@alex:(0)你的两句话不兼容。。。你不能忘记你不知道的事情(1)对照(a)文档测试你的想法(b)使用交互式解释器进行简单测试。。。经常保存提问并快得多(2)考虑重读<代码>http://stackoverflow.com/questions/1808567/what-is-the-default-content-type-charset
并找出你真正的问题所在。@alex:答案中有进一步的想法(无法在注释中格式化代码)。
statlist.sort(key=lambda x: x[1])
otherlist = sorted( statlist, key=lambda x: x[1] )
>>> alist = [3, 2, 1]; x = alist.sort(); print x; print alist
None
[1, 2, 3]
>>> alist = [3, 2, 1]; x = sorted(alist); print x; print alist
[1, 2, 3]
[3, 2, 1]
    while i <= math.sqrt(intnum):
        if (intnum % i) == 0:
            numbers.insert(0,i)
            numbers.insert(0,int(intnum/i))
            print(i,":", int(intnum/i))
        i += 1
    numbers = sorted(numbers, reverse = True)