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] = []
Run Code Online (Sandbox Code Playgroud)
追溯我得到一个奇怪的错误:
r[i:i+1] = []
TypeError: 'range' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
不知道为什么它会抛出这个异常,他们是否在Python 3.2中改变了一些东西?
好猜:他们确实改变了一些东西.用于返回列表的范围,现在它返回一个可迭代范围对象,非常类似于旧的xrange.
>>> range(10)
range(0, 10)
Run Code Online (Sandbox Code Playgroud)
您可以获取单个元素但不分配给它,因为它不是列表:
>>> 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
Run Code Online (Sandbox Code Playgroud)
您只需在范围对象上调用list即可获得您习惯的内容:
>>> 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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4014 次 |
| 最近记录: |