基数排序 python 语法
Radix sort python grammar
找到基数排序代码,但无法很好地理解“arr=[j for i in bucket_list for j in i]”行
我知道它是根据 bucket_list 排序的,但是 j, i 在这一行中是什么意思,编写这个函数的一般方法是什么?谢谢
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
您询问的代码行中包含列表推导式。它相当于一个 two-level 嵌套循环:
arr = []
for i in bucket_list:
for j in i:
arr.append(j)
因为它是基数排序,
在任何迭代中,我们都可以有 1 个或多个相同权重的值:
以 456 和 656 为例,假设我们看到的是个位数,所以在桶中,这两个将出现在列表中,即像 [[456, 656]],即使在第二次迭代中也是 56 , 他们将进入同一个桶 [[456, 656]].
arr=[j for i in bucket_list for j in i]
所以想要这条线,它是按照它们放置的相同顺序获取每个桶的内部元素。
找到基数排序代码,但无法很好地理解“arr=[j for i in bucket_list for j in i]”行 我知道它是根据 bucket_list 排序的,但是 j, i 在这一行中是什么意思,编写这个函数的一般方法是什么?谢谢
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
您询问的代码行中包含列表推导式。它相当于一个 two-level 嵌套循环:
arr = []
for i in bucket_list:
for j in i:
arr.append(j)
因为它是基数排序, 在任何迭代中,我们都可以有 1 个或多个相同权重的值: 以 456 和 656 为例,假设我们看到的是个位数,所以在桶中,这两个将出现在列表中,即像 [[456, 656]],即使在第二次迭代中也是 56 , 他们将进入同一个桶 [[456, 656]].
arr=[j for i in bucket_list for j in i]
所以想要这条线,它是按照它们放置的相同顺序获取每个桶的内部元素。