Python在使用=%

2024-10-03 17:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python创建基数排序。到目前为止,这是我的代码:

i = 0
numbers = "random_numbers10.txt"
numbersAsString = open(numbers)
numbersList = [int(i) for i in numbersAsString]

thisList = numbersList
bins = [[], [], [], [], [], [], [], [], [], []]
divisor = 10


for y in range(0,10):
    for x in range(0, len(thisList)):
        c = numbersList[x]
        c %= divisor
        thisList[x] = c
    for n in range(0, len(thisList)):
        if thisList[n] == n:
            bins[n].append(numbersList)
    for m in range(0, 10):
        for o in range(0, len(bins[m])):
            numbersList.append(bins[m])




for i in numbersList:
    print(numbersList[i])

不幸的是,在c%=divisor行上,python抛出了一个TypeError:unsupported operand type for%=:'list'和'int'

如果我打印c或numbersList[x],它将显示为我的数字列表中的预期数字。作为列表成员的整数是否会被识别为列表本身?还是我的第四行代码有问题?事先非常感谢。你知道吗


Tags: 代码in列表forlenrange数字divisor
2条回答
for m in range(0, 10):
    for o in range(0, len(bins[m])):
        numbersList.append(bins[m])

我觉得这不对劲。您可以迭代o,但从不使用它。按原样,您将列表添加到numbersList,而不是整数。你是说:

for m in range(0, 10):
    for o in range(0, len(bins[m])):
        numbersList.append(bins[m][o])

或者,正如Ilja所建议的,你可以把它缩短为:

for m in range(0, 10):
    numbersList.extend(bins[m])

您制作了数字列表的浅显副本:

thislist = numbersList

这行表示thislist指向numbersList,它不是单独的实体或副本。你知道吗

当您的代码到达m范围时,您可以通过附加项来更改numbersList。这也改变了这个列表。你知道吗

thislist = numbersList[:]

更改此选项已修复值错误,但现在您将注意到numbersList末尾有一堆空箱子。它不会使用示例末尾的for循环打印。你知道吗

请注意,排序算法似乎也不起作用,至少在我的示例中,一个问题解决了,另一个问题找到了!你知道吗

相关问题 更多 >