基数排序python语法
查找基数排序代码,但无法很好地理解行“arr=[j代表bucket中的i\u列表中的j代表i]” 我知道这是基于bucket_列表的排序,但是j,我在这行中的意思是什么,写这个函数的一般方法是什么?谢谢基数排序python语法,python,sorting,radix,Python,Sorting,Radix,查找基数排序代码,但无法很好地理解行“arr=[j代表bucket中的i\u列表中的j代表i]” 我知道这是基于bucket_列表的排序,但是j,我在这行中的意思是什么,写这个函数的一般方法是什么?谢谢 def radix_sort(arr:List[int]): n = len(str(max(arr))) for k in range(n): bucket_list=[[] for i in range(10)] for i in arr:
def radix_sort(arr:List[int]):
n = len(str(max(arr)))
for k in range(n):
bucket_list=[[] for i in range(10)]
for i in arr:
bucket_list[i//(10**k)%10].append(i)
arr=[j for i in bucket_list for j in i]
print(arr)
return arr
您询问的代码行中有一个列表。它相当于两级嵌套循环:
arr = []
for i in bucket_list:
for j in i:
arr.append(j)
您询问的代码行中有一个列表。它相当于两级嵌套循环:
arr = []
for i in bucket_list:
for j in i:
arr.append(j)
因为它是基数排序,
在任何迭代中,我们可以有1个或多个相同权重的值:
以456和656为例,假设我们看到的是单位数字,因此在桶中,这两个数字将出现在一个列表中,例如[[456656]],即使在第二次迭代中,因为它们都是56,它们也将出现在同一个桶中[[456656]]
arr=[j for i in bucket_list for j in i]
因此,这一行的作用是,它按照每个bucket的内部元素的放置顺序进行排序。因此,它是基数排序,
在任何迭代中,我们可以有1个或多个相同权重的值:
以456和656为例,假设我们看到的是单位数字,因此在桶中,这两个数字将出现在一个列表中,例如[[456656]],即使在第二次迭代中,因为它们都是56,它们也将出现在同一个桶中[[456656]]
arr=[j for i in bucket_list for j in i]
因此,这一行要做的是,它将每个桶的内部元素按照它们放置的相同顺序进行处理。它将一个列表展平为一个列表,例如,
bucket\u list=[[1,2],[5,6],[3]
=>arr=[1,2,5,6,3]请看是的,无论尼克说了什么都是答案,我也在下面解释了它,你可以参考。谢谢所有的帮助。它正在将列表列表展平为一个列表,例如bucket\u list=[[1,2],[5,6],[3]
=>arr=[1,2,5,6,3]
请看是的,无论尼克说了什么都是答案,我也在下面解释了,你可以参考。谢谢所有的帮助