关于python for循环特别感兴趣的问题.工程程序通常需要先前或未来索引的值,例如:
for i in range(0,n):
value = 0.3*list[i-1] + 0.5*list[i] + 0.2*list[i+1]
Run Code Online (Sandbox Code Playgroud)
等等...
但是我更喜欢漂亮干净的python语法:
for item in list:
#Do stuff with item in list
Run Code Online (Sandbox Code Playgroud)
或者对于2d点数据的列表:
for [x,y] in list:
#Process x, y data
Run Code Online (Sandbox Code Playgroud)
我喜欢循环遍历列表而不明确使用索引来引用列表中的项目的概念.我想知道是否有一个干净的方法来抓住上一个或下一个项目而不循环索引(或没有独立跟踪索引)?
编辑:
感谢Andrew Jaffe(以及代理Mark Byers)和gnibbler的简单,可扩展的示例.到目前为止,我还没有意识到itertools或nwise模块.John Machin - 感谢非常复杂的例子.你在这个例子中付出了很多努力,显然我提出的一些递归算法不能生成与输入列表具有相同元素数量的列表,如果不使用显式索引则会出现问题.像这样的算法通常会出现在信号处理中.
我正在尝试学习Tkinter,目标是能够创建一个"实时"范围来绘制数据.作为测试,每次按下"绘制"按钮时,我都会尝试在画布上绘制多边形.三角形位置是随机的.我有两个问题:
一旦程序启动,画布上就会出现一个三角形,为什么以及如何解决这个问题呢?
当我按下按钮时,它不会绘制任何三角形,至少没有我能看到的.
码
from Tkinter import *
from random import randint
class App:
def __init__(self,master):
#frame = Frame(master)
#frame.pack(side = LEFT)
self.plotspc = Canvas(master,height = 100, width = 200, bg = "white")
self.plotspc.grid(row=0,column = 2, rowspan = 5)
self.button = Button(master, text = "Quit", fg = "red", \
command = master.quit)
self.button.grid(row=0,column=0)
self.drawbutton = Button(master, text = "Draw", command = \
self.pt([50,50]))
self.drawbutton.grid(row = 0, column = 1)
def pt(self, coords):
coords[0] = coords[0] + randint(-20,20)
coords[1] = coords[1] …Run Code Online (Sandbox Code Playgroud)