以下代码
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(L[2:8].sort(reverse=True))
打印
None
,而我希望它打印L = [1, 2, 8, 7, 6, 5, 4, 3, 9, 10]
为什么会这样?
如果这不是对列表的一部分(切片)进行排序的方法,那么考虑到我需要在同一个列表中进行排序,而不是创建另一个列表,那么什么是?
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
L[2:8] = sorted(L[2:8], reverse=True)
print(L)
输出:
[1, 2, 8, 7, 6, 5, 4, 3, 9, 10]
这应该可以解决问题
这是有效的,因为当
L[2:8].sort(reverse=True)
时,它会尝试以相反的顺序对切片 [3, 4, 5, 6, 7, 8]
进行排序。但由于 sort()
更改了此处无法更改的原始内容,并且 None
被返回。
但是
sorted()
不影响原来的列表,需要手动分配位置。