Python 为什么可以';我不能把这个单子分类吗?
我想按从大到小的整数排序。在本例中,为5和66。但是它似乎不起作用。排序的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
函数返回一个新列表,因此您需要像这样分配函数的结果:
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)