gpt4 book ai didi

python - 为什么 "i, j = 1"会导致 "int .. is not iterable"?

转载 作者:太空宇宙 更新时间:2023-11-03 12:19:19 25 4
gpt4 key购买 nike

我正在尝试在 Python 中实现快速排序的分区函数。

def partition(ls):
if len(ls) == 0:
return
pivot = ls[0]
i, j = 1
while j < len(ls):
if ls[j] <= pivot:
i += 1
temp = ls[i]
ls[i] = ls[j]
ls[j] = temp
j += 1
ls[0] = ls[i]
ls[i] = pivot

但是,当我调用 quicksort.partition([1,2,3]) 时,Python 会发出此错误。

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "quicksort.py", line 5, in partition
i, j = 1
TypeError: 'int' object is not iterable

这个错误是什么意思?当然,int 对象是不可迭代的,但我什么时候迭代过 int 对象?

最佳答案

当您在赋值左侧列出以逗号分隔的多个目标时,它会尝试遍历右侧并将片段分配给左侧的片段。因此,如果您执行 x, y = (1, 2),则 x 将为 1,y 将为 2。

如果要使 i 和 j 都为 1,请执行 i = j = 1

(请注意,这会将两个变量绑定(bind)到同一个对象。这对这种情况很好,但是如果您正在分配一个可变对象(如 x = y = []),您应该记住这两个x 和 y 将指向相同的列表,因此突变将同时影响 xy。)

关于python - 为什么 "i, j = 1"会导致 "int .. is not iterable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com