无法在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
;-)。