无法在Python中反转列表,获取“Nonetype”列表

我有一个.py文件,它需要一个列表,find最小的数字,把它放到一个新的数组中,从第一个数组中删除最小的数字,并重复,直到原始数组返回包含没有更多的项目:

 def qSort(lsort): listlength = len(lsort) sortedlist = list() if listlength == 0: return lsort else: while listlength > 0: lmin = min(lsort) sortedlist.append(lmin) lsort.remove(lmin) listlength = len(lsort) return sortedlist 

现在另一个.py文件导入qSort并在某个列表上运行它,并将其保存到一个variables中。 然后我尝试在列表中使用.reverse()命令,并最终将其作为NoneType 。 我尝试使用reversed() ,但它所做的只是说: "<listreverseiterator object at 0xSomeRandomHex>"

 from qSort import qSort #refer to my first Pastebin qSort = qSort([5,42,66,1,24,5234,62]) print qSort #this prints the sorted list print type(qSort) #this prints <type 'list'> print qSort.reverse() #this prints None print reversed(qSort) #this prints "<listreverseiterator object at 0xSomeRandomHex>" 

任何人都可以解释为什么我似乎无法扭转的名单,不pipe我做什么?

正如jcomeau提到的, .reverse()函数改变了列表的位置。 它不返回列表,而是改变了qSort

如果你想'返回'反向列表,所以它可以像你在你的例子中尝试使用,你可以做一个方向为-1的片

所以用print qSort[::-1]replaceprint qSort.reverse()


你应该知道切片,它的有用的东西。 我在教程中并没有真正看到一个地方,它一次被描述,( http://docs.python.org/tutorial/introduction.html#lists并不真正涵盖所有内容),所以希望这里有一些说明例子。;

语法是: a[firstIndexInclusive:endIndexExclusive:Step]

 >>> a = range(20) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> a[7:] #seventh term and forward [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> a[:11] #everything before the 11th term [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a[::2] # even indexed terms. 0th, 2nd, etc [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] >>> a[4:17] [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] >>> a[4:17:2] [4, 6, 8, 10, 12, 14, 16] >>> a[::-1] [19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>> a[19:4:-5] [19, 14, 9] >>> a[1:4] = [100, 200, 300] #you can assign to slices too >>> a [0, 100, 200, 300, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

list.reverse()就地倒置,不返回任何内容(无)。 所以你不要说:

 mylist = mylist.reverse() 

你说:

 mylist.reverse() 

或者可选地:

 mylist = list(reversed(mylist)) 

reverse() list方法对列表进行sorting,并返回None以提醒您(根据文档中的注释7)。 内置的reversed()函数返回一个迭代器对象,它可以通过将它传递给list()构造函数,如下所示变成list对象: list(reversed(qSort)) 。 您可以通过创build一个具有负值长的切片来完成相同的操作,所以它会倒退,即qSort[::-1]

顺便说一句, list也有一个sort()方法(但要小心,它也返回None ;-)。