首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环在Python列表中,每个循环使用多个项。

循环在Python列表中,每个循环使用多个项。
EN

Stack Overflow用户
提问于 2015-02-17 13:48:51
回答 2查看 210关注 0票数 1

所以我在为一个叫Abaqus的节目写剧本..。我有一个数字列表,我需要以以下方式循环这些数字

代码语言:javascript
复制
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点再次启动循环。

任何帮助都会很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-17 13:54:53

假设我正确理解了你的问题,你可以用iterator

代码语言:javascript
复制
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)

    # ...

如果你不介意一点魔法的话

代码语言:javascript
复制
for a, b, c in zip(*[iter(listOfSteps)]*3):
    # ...

保证了迭代的左向右求值顺序.这使得使用zip(*[iter(s)]*n)将数据序列聚类成n长组成为可能。~ Zip文档

票数 5
EN

Stack Overflow用户

发布于 2015-02-17 13:55:07

也许尝试在代码中添加一个计数器变量。

代码语言:javascript
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28562966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档