gpt4 book ai didi

python - 列表分配中范围类型的奇怪错误

转载 作者:太空狗 更新时间:2023-10-30 00:51:45 26 4
gpt4 key购买 nike

r = range(10) 

for j in range(maxj):
# get ith number from r...
i = randint(1,m)
n = r[i]
# remove it from r...
r[i:i+1] = []

回溯我得到一个奇怪的错误:

r[i:i+1] = []
TypeError: 'range' object does not support item assignment

不确定为什么会抛出此异常,他们是否更改了 Python 3.2 中的某些内容?

最佳答案

很好的猜测:他们确实改变了一些东西。 Range 过去返回一个列表,现在它返回一个可迭代的 range 对象,很像旧的 xrange。

>>> range(10)
range(0, 10)

您可以获取单个元素但不能分配给它,因为它不是列表:

>>> range(10)[5]
5
>>> r = range(10)
>>> r[:3] = []
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
r[:3] = []
TypeError: 'range' object does not support item assignment

您可以简单地调用范围对象上的列表来获取您习惯的内容:

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> r = list(range(10))
>>> r[:3] = [2,3,4]
>>> r
[2, 3, 4, 3, 4, 5, 6, 7, 8, 9]

关于python - 列表分配中范围类型的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9091044/

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