所以我在为一个叫Abaqus的节目写剧本..。我有一个数字列表,我需要以以下方式循环这些数字
listOfSteps = [1, 4, 7, 10, 17, 22, 28, 29, 30, 43, 47, 50]
fileNameCreate = 0
for i in listOfSteps:
session.viewports['Viewport: 1'].odbDisplay.setFrame(step=i, frame=-1)
session.viewports['Viewport: 2'].odbDisplay.setFrame(step=i, frame=-1)
session.viewports['Viewport: 3'].odbDisplay.setFrame(step=i, frame=-1)
session.printOptions.setValues(reduceColors=False)
session.printToFile(fileName='C:/Image'+str(fileNameCreate+1), format=PNG,
canvasObjects=(session.viewports['Viewport: 3'],
session.viewports['Viewport: 2'], session.viewports['Viewport: 1']))所以我需要第一步使用1,第二步使用4,第三步使用7。
然后执行代码来保存文件。
然后在10点再次启动循环。
任何帮助都会很好。
发布于 2015-02-17 13:54:53
假设我正确理解了你的问题,你可以用iterator
listOfSteps = [1, 4, 7, 10, 17, 22, 28, 29, 30, 43, 47, 50]
fileNameCreate = 0
it = iter(listOfSteps)
for a in it:
b = next(it)
c = next(it)
session.viewports['Viewport: 1'].odbDisplay.setFrame(step=a, frame=-1)
session.viewports['Viewport: 2'].odbDisplay.setFrame(step=b, frame=-1)
session.viewports['Viewport: 3'].odbDisplay.setFrame(step=c, frame=-1)
# ...如果你不介意一点魔法的话
for a, b, c in zip(*[iter(listOfSteps)]*3):
# ...保证了迭代的左向右求值顺序.这使得使用
zip(*[iter(s)]*n)将数据序列聚类成n长组成为可能。~ Zip文档
发布于 2015-02-17 13:55:07
也许尝试在代码中添加一个计数器变量。
listOfSteps = [1, 4, 7, 10, 17, 22, 28, 29, 30, 43, 47, 50]
fileNameCreate = 0
cnt = 0
for i in listOfSteps:
cnt =+ 1
if cnt % 3 == 0:
# here do your write magic https://stackoverflow.com/questions/28562966
复制相似问题