我不明白为什么我的列表在 Nonetype 中。我正在尝试构建一个接收 int 列表的函数,该列表的第一个索引是主元,然后对列表的其余部分进行排序,因此每个大于主元的 int 都将位于右侧,而 int 则小于枢轴将在左侧。整数不需要从小到大排序。 这是我的代码:
def divide_list(lst):
pivot = lst[0]
lst= lst.reverse()
for i in lst:
if i>pivot:
lst.append(i)
lst.remove(i)
return lst
谢谢!
最佳答案
lst.reverse()
原地 反转列表并返回 None
。不要将返回值分配回 lst
:
def divide_list(lst):
pivot = lst[0]
lst.reverse()
for i in lst:
if i>pivot:
lst.append(i)
lst.remove(i)
return lst
如果您不想就地更改 lst
,请使用负切片以相反的顺序获取列表的新副本:
def divide_list(lst):
pivot = lst[0]
lst = lst[::-1]
for i in lst:
if i>pivot:
lst.append(i)
lst.remove(i)
return lst
这样还是会导致各种问题;当您在 for
循环中就地更改列表时,您的方法将不起作用。当您向列表中添加和删除元素时,迭代器不会得到更新并且列表行为将不是您所期望的。
假设您有一个列表 [3, 4, 1, 2]
反转后,主元为 2
。在循环中,for
循环使用的迭代器查找 lst[0]
,然后您将 3
移到循环的末尾通过附加和删除列表。现在列表看起来像 [4, 1, 2, 3]
并且循环前进到 lst[1]
,所以到 1
值. 4
已被完全跳过!
关于python - 为什么我的列表是 Nonetype?在 python ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19818971/