如何解决这个IndexError: list index out of range



im with this IndexError: list index out of range error and don我不知道如何解决它,我必须创建和排序一个随机列表5,10,100,1000,10000。如果我运行这段代码一次,我没有得到这个错误

import random
def bucketSort(array):
bucket = []
# Create empty buckets
for i in range(len(array)):
bucket.append([])
# Insert elements into their respective buckets
for j in array:
index_b = j #int(10 * j)
bucket[index_b].append(j)
# Sort the elements of each bucket
for i in range(len(array)):
bucket[i] = sorted(bucket[i])
# Get the sorted elements
k = 0
for i in range(len(array)):
for j in range(len(bucket[i])):
array[k] = bucket[i][j]
k += 1
return array
for i in range(10):
nElementos = 10
array = [0] * nElementos
for i in range(nElementos):
array[i] = random.randint(0,nElementos)
print(array) 
print("Sorted Array in descending order is")
print(bucketSort(array))

第14行,在bucketSortbucket[index_b].append(j) IndexError: list index out of range

如果array中的项大于或等于len(array),您将获得索引错误,因为(在第14行)您试图将该元素插入到与array长度相同的桶中。

问题是:

random.randint(0,nElementos)

生成范围从0到nElementos的整型,包括. 如果生成的随机数与nElementos相同,则代码将中断,因为它基本上会尝试这样做:

bucket[len(array)]

假设其余代码是正确的,只需将随机生成更改为此,它应该可以工作

random.randint(0, nElementos - 1)

相关内容

  • 没有找到相关文章

最新更新