在spyder3.6上跑2.7遇到的问题汇总
------------------------------------------------------
1、NameError: name 'xrange' is not defined
在Python 3中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange( )
所以,如果直接用xrange的话会报错
解决:直接将xrange改成range
参考:https://blog.youkuaiyun.com/u010412719/article/details/47088095
2、TypeError: 'range' object does not support item assignment
原来的程序是这样的:
if random is None:
randbelow = self._randbelow
for i in reversed(range(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = randbelow(i+1)
x[i], x[j] = x[j], x[i]
查了资料发现说是因为:
range() 返回的是“range object”,而不是实际的list 值。
将上面例子的代码: a = range(0,N)改为a = list(range(0,N)) 就好啦!
我以为是把for循环的那句话改成 for i in reversed(list