任何人都可以告诉我们这段代码有什么问题吗?我需要输出排序列表和反向列表
def sort_num():
count=1;
global a
a=[]
while count<11:
no=int(raw_input("no %d:" %count))
a.append(no)
count+=1
print a
print a.reverse()
print a.sort()
我的输出是:
[2, 33, 4, 11, 7, 8, 5, 6, 33, 0]
None
None
答案 0 :(得分:1)
list.reverse
和list.sort
是正在进行的反转和排序功能。他们返回None
。因此,您必须单独打印a
,如此
a.reverse()
print a
a.sort()
print a
答案 1 :(得分:1)
另一种选择是调用内置reversed
(返回迭代器)和sorted
(返回已排序的副本)方法。
print list(reversed(a))
print sorted(a)
答案 2 :(得分:1)
这将为您提供数组的排序版本。
sorted(a, reverse=True)
如果您想就地排序:
a.sort(reverse=True)
答案 3 :(得分:1)
关于为什么list.sort()不返回排序列表的位说明?
在性能很重要的情况下,复制列表只是为了对其进行排序会很浪费。因此,list.sort()会对列表进行排序。
为了提醒您这一事实,它不会返回已排序的列表。这样,当您需要排序副本时,您不会被意外地覆盖列表,但也需要保留未排序的版本。在这种情况下,使用builtin sorted()函数。
sorted()是一个内置函数:
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
>>>
list.sort()是一种列表方法,它将在列表本身上发生变化:
>>> help(list.sort)
Help on method_descriptor:
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1
段:
>>> ls = [3,2,1]
>>> sorted(ls)
[1, 2, 3]
>>> ls
[3, 2, 1]
>>> ls.sort()
>>> ls
[1, 2, 3]
>>>
希望能够清除你的怀疑。