'range' object does not support item assignment
时间: 2023-06-10 21:06:09 浏览: 172
这个错误通常是因为您尝试在一个range对象上进行索引赋值,而range对象是不可变的,不能像列表一样进行修改。您可以将range对象转换为列表,然后进行修改,或者使用另一种可变类型的数据结构来存储您需要的数据。
例如,将range对象转换为列表:
```
r = range(10)
l = list(r)
l[0] = 1
```
或者使用一个列表来代替range对象:
```
l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l[0] = 1
```
相关问题
TypeError: 'generator' object does not support item assignment
这个错误通常是因为您试图在生成器对象上执行索引分配操作。生成器是一种迭代器,它生成值的序列。它们不支持索引分配,因为它们没有实际的内存来存储整个序列。
如果您想对生成器对象进行索引分配操作,可以将其转换为列表或其他可变序列类型,例如:
```
my_generator = (x**2 for x in range(5))
my_list = list(my_generator)
my_list[2] = 10
```
这样,您就可以将生成器对象转换为列表,然后在列表上执行索引分配操作。
Message='builtin_function_or_method' object does not support item assignment Source=E:\1daer\wanganshijian\6.10\_6.10.py StackTrace: File "E:\1daer\wanganshijian\6.10\_6.10.py", line 4, in <module> (Current frame) input[i] = chr(enc[i] ^ iv) ~~~~~^^^ TypeError: 'builtin_function_or_method' object does not support item assignment
这个错误是因为在 Python 中,函数参数是不可变的,所以不能像 C 语言那样通过下标来修改函数参数的值。解决这个问题的方法是,将函数参数 `input` 定义为一个可以修改的对象,比如列表或者字节数组,然后在函数内部修改该对象的值。
以下是一个修改后的 Python 实现:
```python
def construct_input(input):
enc = [65, 192, 124, 229, 151, 36, 175, 112, 235, 157, 6, 161, 95, 250, 97, 27, 178, 42, 213, 56]
iv = 0x33
for i in range(20):
input[i] = enc[i] ^ iv
iv = input[i] + iv
```
在这个实现中,我们将函数参数 `input` 定义为一个列表,然后在函数内部通过下标来修改列表中相应位置的值。这样就可以避免上述错误的出现。
阅读全文
相关推荐














