我正在尝试使用python中的tkinter在简单图表中的列表中表示值。索引为X,值为Y.我试过这个方法:
from Tkinter import *
root = Tk()
ls = [1,5,3,4,7,8,3,2,5]
cv = Canvas(root)
for ind,val in enumerate(ls):
cv.create_line(ind*20,\
val*20,\
(ind+1)*20,\
ls[ind+1]*20)
cv.pack()
root.mainloop()
正如您所看到的,我正在使用当前项目中的索引和值作为初始XY,并且与列表中的下一项目相同。当循环到达最后一项并尝试获取ls [ind + 1]
时,这会引发明显的IndexError考虑到这个错误,我试图修改循环以忽略最后一项。得到了这个:
from Tkinter import *
root = Tk()
ls = [1,5,3,4,7,8,3,2,5]
cv = Canvas(root)
for ind,val in enumerate(ls):
if ls[ind] is ls[-1]:
pass
else:
cv.create_line(ind*20,\
val*20,\
(ind+1)*20,\
ls[ind+1]*20)
cv.pack()
root.mainloop()
它有效...或者至少,它不会破坏程序。但是如果任何项目与最后一个项目具有相同的值,则循环忽略该循环。我被困在这里。我认为这是更简单的方法,但我无法弄清楚如何忽略最后一项。
有条件的信息:这是一个较大程序的孤立问题。列表不是硬编码的,因此使用最后一项的索引不是一种选择。