Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Python中反转列表,获取;“非类型”;作为列表_Python_List - Fatal编程技术网

无法在Python中反转列表,获取;“非类型”;作为列表

无法在Python中反转列表,获取;“非类型”;作为列表,python,list,Python,List,我有一个.py文件,它获取一个列表,找到最低的数字,将其放入一个新数组,从第一个数组中删除最低的数字,然后重复,直到原始数组返回时不再包含任何项目: def qSort(lsort): listlength = len(lsort) sortedlist = list() if listlength == 0: return lsort else: while listlength > 0: lmin

我有一个
.py
文件,它获取一个列表,找到最低的数字,将其放入一个新数组,从第一个数组中删除最低的数字,然后重复,直到原始数组返回时不再包含任何项目:

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
并在某个列表上运行它,将其保存到变量中。然后我尝试使用列表上的
.reverse()
命令,最后得到的是
NoneType
。我尝试使用
reversed()
,但它所做的只是说

从qSort导入qSort#参考我的第一个粘贴箱
qSort=qSort([5,42,66,1,245234,62])
打印qSort#打印已排序的列表
打印类型(qSort)#此打印
打印qSort.reverse()
反向打印(qSort)#此打印“”
有人能解释一下为什么无论我做什么,我似乎都无法反转列表吗?

list.reverse()原地反转,不返回任何内容(None)。所以你不会说:


mylist = mylist.reverse()
你说:


mylist.reverse()
或者:


mylist = list(reversed(mylist))

正如jcomeau提到的,
.reverse()
函数将更改列表。它不返回列表,而是保留
qSort
更改

如果您想“返回”反向列表,这样就可以像您在示例中尝试的那样使用它,那么您可以执行方向为-1的切片

因此,将
print qSort.reverse()
替换为
print qSort[:-1]


你应该知道切片,它是有用的东西。我在教程中没有看到一个地方一次描述了所有内容(并没有真正涵盖所有内容),所以希望这里有一些说明性的例子

语法是:
a[firstIndexInclusive:endindexexexclusive: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]
reverse()。内置的
reversed()
函数返回一个迭代器对象,通过将其传递给
list()
构造函数,可以将其转换为
list
对象,如下所示:
list(reversed(qSort))
。您可以通过创建一个步长为负的切片来完成同样的事情,这样它就可以向后运行,即
qSort[::-1]


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

要创建一个迭代器以相反的顺序在列表上循环,请使用
reversed
函数:
reversed(mylist)
返回一个列表。@Samir:reversed(mylist)返回一个迭代器,正如您刚才所说的,而不是列表“切片”?你现在说的是希腊语。但是,您的方法可以工作,并且只需较少的击键,因此对我来说很好。它的工作原理类似于
a[beginindexinclude:endIndexExcluded:Step]
a[0:4]
给出的列表中包含了从0到3的术语a<代码>a[3::2]
给出了包含术语3、5、7的列表。。。到最后<代码>a[::-1]包含a的所有元素,但从最后一个元素开始,以第一个元素结束(反转)+1,一个被接受的答案值得投票,我同意这是最好的解决方案哦,哇。那真的很有用。我今天刚刚学习Python,所以我对它还不是很了解。现在这很有意义。
>>> 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]