python-3.x - 'range'对象不支持python3中的项目分配

标签 python-3.x compiler-errors

如何解决这个错误:
在plot_rainbow中的第53行,文件“rainbow.py”
xr [0],yr [0] = offset_curve(ax,x,y,lw/2。)
TypeError:“范围”对象不支持项目分配
在下面的代码中,好吗?我试图用xrange代替range,但这无济于事。

import numpy as np
import matplotlib.pyplot as plt

dpi = 100

def offset(x,y, o):
    """ Offset coordinates given by array x,y by o """
    X = np.c_[x,y].T
    m = np.array([[0,-1],[1,0]])
    R = np.zeros_like(X)
    S = X[:,2:]-X[:,:-2]
    R[:,1:-1] = np.dot(m, S)
    R[:,0] = np.dot(m, X[:,1]-X[:,0])
    R[:,-1] = np.dot(m, X[:,-1]-X[:,-2])
    On = R/np.sqrt(R[0,:]**2+R[1,:]**2)*o
    Out = On+X
    return Out[0,:], Out[1,:]


def offset_curve(ax, x,y, o):
    """ Offset array x,y in data coordinates
        by o in points """
    trans = ax.transData.transform
    inv = ax.transData.inverted().transform
    X = np.c_[x,y]
    Xt = trans(X)
    xto, yto = offset(Xt[:,0],Xt[:,1],o*dpi/72. )
    Xto = np.c_[xto, yto]
    Xo = inv(Xto)
    return Xo[:,0], Xo[:,1]


# some single points
y = np.array([1,2,2,3,3,0])    
x = np.arange(len(y))
#or try a sinus
x = np.linspace(0,9)
y=np.sin(x)*x/3.


fig, ax=plt.subplots(figsize=(4,2.5), dpi=dpi)

cols = ["#fff40b", "#00e103", "#ff9921", "#3a00ef", "#ff2121", "#af00e7"]
lw = 2.
lines = []
for i in range(len(cols)):
    l, = plt.plot(x,y, lw=lw, color=cols[i])
    lines.append(l)


def plot_rainbow(event=None):
    xr = range(6); yr = range(6); 
    xr[0],yr[0] = offset_curve(ax, x,y, lw/2.)
    xr[1],yr[1] = offset_curve(ax, x,y, -lw/2.)
    xr[2],yr[2] = offset_curve(ax, xr[0],yr[0], lw)
    xr[3],yr[3] = offset_curve(ax, xr[1],yr[1], -lw)
    xr[4],yr[4] = offset_curve(ax, xr[2],yr[2], lw)
    xr[5],yr[5] = offset_curve(ax, xr[3],yr[3], -lw)

    for i  in range(6):     
        lines[i].set_data(xr[i], yr[i])


plot_rainbow()

fig.canvas.mpl_connect("resize_event", plot_rainbow)
fig.canvas.mpl_connect("button_release_event", plot_rainbow)

plt.savefig(__file__+".png", dpi=dpi)
plt.show()
我尝试从this问题编译代码。

最佳答案

无法设置range对象。
您可以通过以下方式将其更改为列出:

 xr = list(range(6)); yr = list(range(6));  
但是我不明白为什么首先要在range中使用。如果您只是想初始化一个列表,我会选择类似的东西:
xr,  yr = 6*[None], 6*[None]
当然,您可以放入0或其他任何形式的None

关于python-3.x - 'range'对象不支持python3中的项目分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65372923/

相关文章:

python - pandas groupby 总结两列之间的差异并获得每组的平均值

c++ - 变量类型不完整的编译器错误

javascript - ./src/index.js第10行: 'elementid' is not defined no-undef

java - 有人可以帮我解决我的代码错误吗?

android - 更新到 Android Studio 3.1 后出现奇怪的错误

python - 从Python中的不同目录导入同名文件?

python - 如何从多个数组/列表中打印多个值,仅在第一个输出前面使用字符串并在值之间使用逗号分隔?

c++ - 模板参数 2 和 1 无效 - 声明 vector

Python:如何将二进制数据写入标准输出以便 bash 脚本可以使用进程替换?

python - 具有两个 "synchronized"变量的类的最短示例