所以我正在编写一个名为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,第2步使用4,第3步使用7
然后执行代码保存文件
然后在10
再次开始循环任何帮助都会很棒。
答案 0 :(得分:5)
假设我已正确理解您的问题,您可以使用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 Docs
答案 1 :(得分:0)
也许尝试在代码中添加一个计数器变量
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