1.append和+=
res=[]
nums1=[1,2,3]
res.append(nums1[1])
print(res)#输出[2]
res.append([nums1[1]])
print(res)#输出[[2]]
res.append(nums1[1:2])
print(res)#输出[[2]]
res.append(nums1[1:3])
print(res)#输出[[2,3]]
res+=nums1[1:3]
print(res)#输出[2,3]
也就是说,nums1[1:3]这样的子串仍然是列表
2.归并排序
from typing import List
class Solution:
def mergeSorted(self,nums1:List[int],nums2:List[int])->List[int]:
index1,index2=0,0
res=[]
while index1<len(nums1) and index2<len(nums2):
if nums1[index1]<nums2[index2]:
res.append(nums1[index1])
index1+=1
else:
res.append(nums2[index2])
index2+=1
res+=nums1[index1:] if index1<len(nums1) else nums2[index2:]
return res
def sortList(self,nums:List[int])->List[int]:
if len(nums)<=1:
return nums
mid=len(nums)//2
left=self.sortList(nums[0:mid])
right=self.sortList(nums[mid:])
return self.mergeSorted(left,right)
这是我手写的,夸一下自己
3.快速排序:
def quick_sort(arr:List[int])->List[int]:
n=len(arr)
if n<=1:
return arr
mid_index=n//2
left,mid,right=[],[],[]
for i in range(n):
if arr[i]<arr[mid_index]:
left.append(arr[i])
elif arr[i]==arr[mid_index]:
mid.append(arr[i])
else:
right.append(arr[i])
left=quick_sort(left)
right=quick_sort(right)
return left+mid+right