Python 类型错误:';范围';对象不支持项分配
我在看一些Python 类型错误:';范围';对象不支持项分配,python,python-3.x,Python,Python 3.x,我在看一些Python2.x代码,并试图将其翻译成Py3.x,但我仍停留在这一部分。有人能澄清什么是错的吗 import random emails = { "x": "[REDACTED]@hotmail.com", "x2": "[REDACTED]@hotmail.com", "x3": "[REDACTED]@hotmail.com" } people = emails.keys() #generate a number for everyone alloc
Python2.x
代码,并试图将其翻译成Py3.x
,但我仍停留在这一部分。有人能澄清什么是错的吗
import random
emails = {
"x": "[REDACTED]@hotmail.com",
"x2": "[REDACTED]@hotmail.com",
"x3": "[REDACTED]@hotmail.com"
}
people = emails.keys()
#generate a number for everyone
allocations = range(len(people))
random.shuffle(allocations)
这是给出的错误:
TypeError: 'range' object does not support item assignment
在Python3中,
range
返回一个惰性序列对象-它不返回列表。无法重新排列范围对象中的元素,因此无法对其进行洗牌
在洗牌之前将其转换为列表
allocations = list(range(len(people)))
在Python3中,
range
返回一个惰性序列对象-它不返回列表。无法重新排列范围对象中的元素,因此无法对其进行洗牌
在洗牌之前将其转换为列表
allocations = list(range(len(people)))
如果您可以使用numpy库,您可以用
np.arange
替换range
:
import numpy as np
allocations = np.arange(len(people))
如果您可以使用numpy库,您可以用
np.arange
替换range
:
import numpy as np
allocations = np.arange(len(people))
你知道python3的xrange等价物吗?python3的
range
与python2的xrange
相同。旧的range
不再存在。它返回一个序列类型的range对象。您知道python3的xrange等价物吗?python3的range
与python2的xrange
相同。旧的range
不再存在。它返回一个序列类型的range对象导入numpy
对于这一点,当它可以通过使用list()
以本机方式完成时,就太过了。对于这一点,当它可以通过使用list()
以本机方式完成时,导入numpy
就太过了。