在追加之前我真的需要 list.copy() 一个列表吗?
Do I really need to list.copy() a list before append?
我有两个列表,
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
如果我想合并它们并用list2.sort()
排列它们,我可以只使用list2.extend(list1)
吗?
或者我需要在扩展前复制一份吗?[=16=]
list3 = list1.copy()
list3.extend(list2)
为什么我的列表没有排序
list3 = []
list3.append(list1 + list2)
list3.sort()
print(list3)
这取决于您需要做什么。如果你不打算在你的程序的其他地方使用list2的原始内容(在合并和排序之前),那么你不需要复制。
首先,您需要记住哪些函数 return 是一个列表,哪些 modify/mutate 是调用函数的列表。这是一个摘要:
extend
、append
和 sort
改变了一个列表,但 sorted
return 是一个新列表。
所以是的,您可以用一个列表扩展另一个列表,然后按照您所做的那样对其进行排序。您不需要制作副本(除非您出于某种原因确实需要)。
当与列表一起使用时,+
与 extend
的作用相同。不幸的是,list3.append(list1 + list2)
并没有按照您的想法去做,append
用于将单个项目添加到列表的末尾,您需要使用 +
或 extend
如果你想像以前一样将一个列表添加到另一个列表,例如new_list = list1 + list2 + list3
。然后就可以排序打印了。
回答你最后一个问题:
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
list3 = []
list3.append(list1 + list2)
这会在列表中附加一个列表。如果你 print(list3)
你得到
[[91, 95, 97, 99, 92, 93, 96, 98]]
.sort()
方法尝试对外部列表进行排序,其中只有 1 个元素,无法进一步排序。要对您需要做的列表进行排序,
list3[0].sort()
现在打印 list3 给你,
'打印(列表 3)`
[[91, 92, 93, 95, 96, 97, 98, 99]]
我有两个列表,
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
如果我想合并它们并用list2.sort()
排列它们,我可以只使用list2.extend(list1)
吗?
或者我需要在扩展前复制一份吗?[=16=]
list3 = list1.copy()
list3.extend(list2)
为什么我的列表没有排序
list3 = []
list3.append(list1 + list2)
list3.sort()
print(list3)
这取决于您需要做什么。如果你不打算在你的程序的其他地方使用list2的原始内容(在合并和排序之前),那么你不需要复制。
首先,您需要记住哪些函数 return 是一个列表,哪些 modify/mutate 是调用函数的列表。这是一个摘要:
extend
、append
和sort
改变了一个列表,但sorted
return 是一个新列表。
所以是的,您可以用一个列表扩展另一个列表,然后按照您所做的那样对其进行排序。您不需要制作副本(除非您出于某种原因确实需要)。
当与列表一起使用时,+
与 extend
的作用相同。不幸的是,list3.append(list1 + list2)
并没有按照您的想法去做,append
用于将单个项目添加到列表的末尾,您需要使用 +
或 extend
如果你想像以前一样将一个列表添加到另一个列表,例如new_list = list1 + list2 + list3
。然后就可以排序打印了。
回答你最后一个问题:
list1 = [91, 95, 97, 99]
list2 = [92, 93, 96, 98]
list3 = []
list3.append(list1 + list2)
这会在列表中附加一个列表。如果你 print(list3)
你得到
[[91, 95, 97, 99, 92, 93, 96, 98]]
.sort()
方法尝试对外部列表进行排序,其中只有 1 个元素,无法进一步排序。要对您需要做的列表进行排序,
list3[0].sort()
现在打印 list3 给你,
'打印(列表 3)`
[[91, 92, 93, 95, 96, 97, 98, 99]]