我正在尝试对打印中list2
的输出进行排序。
list1 = [1, 2, 3]
list2 = [40, 50, 60]
list3 = list2 + list1 + list2.sort(reverse=True)
print(f"The new list is: {list3}")
我试图用一个Python语句为list3
创建,该语句只使用list1
和list2
来构造一个新的list3
,这样代码将打印运行的以下输出。
The new list is: [40, 50, 60, 1, 2, 3, 60, 50, 40]
但是,我收到一个错误:TypeError: can only concatenate list (not "NoneType") to list
编辑:将list2.sort(reverse.True)
更改为list2.sort(reverse=True)
list3 = list2 + list1 + list2.sort(reverse.True)
抛出Syntax Error
——你可能是指:list3 = list2 + list1 + list2.sort(reverse = True)
。
[TIP]比list2.sort(reverse = True)
更简单的方法是list2.reverse()
。
然而,(list2.sort(reverse = True)
和list2.reverse()
(都是就地操作——它们不是列表对象,只是更改列表的操作。
为了能够对列表求和,您必须添加列表对象,例如:list2[::-1]
:
list3 = list2 + list1 + list2[::-1]
由于list2.sort(reverse.True)
将list2
就地排序并返回None
,因此无法将其连接到list2 + list1
list1 = [1, 2, 3]
list2 = [40, 50, 60]
list3 = list2 + list1 + sorted(list2, reverse=True)
print(f"The new list is: {list3}")
使用返回排序列表的sorted
工作
就地排序:
list1 = [2, 3, 1]
list1.sort()
print(list1)
>> [1, 2, 3]
错位分拣:
list1 = [2, 3, 1]
result_list = sorted(list1)
print(list1)
>> [2, 3, 1]
print(result_list)
>> [1, 2, 3]
结账https://docs.python.org/3/howto/sorting.html以获取更多信息。它给出了一个简单的介绍。
试试这个
list1 = [1, 2, 3]
list2 = [40, 50, 60]
list3 = list2.copy()
list3.sort(reverse=True)
list4 = list2 + list1 + list3
print(f"The new list is: {list4}")