首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python列表理解中放置变量

在python列表理解中放置变量
EN

Stack Overflow用户
提问于 2016-06-04 20:15:52
回答 1查看 119关注 0票数 3

以下两个循环构造基本相同。我只是不知道如何在第一个语法中插入两个变量start = start+2end = end+2。谢谢

第一种结构(清单理解):

代码语言:javascript
复制
start = 1
end = 3    

clips = [ImageClip(os.path.join(folder,pic))
         .resize(width=w*9.3/16)
         .set_start(start)
         .set_end(end)
         .set_pos(lambda t:(max((402), (int(w-3*w*t))), "center"))
         for pic in picfiles]

第二个构造(规则循环):

代码语言:javascript
复制
start = 1
end = 3
clips = []
for pic in picfiles:
    clips.append(ImageClip(os.path.join(folder,pic))
                 .resize(width=w*9.3/16)
                 .margin(left=31, opacity=0)
                 .set_start(start)
                 .set_end(end)
                 .set_pos(lambda t:(max((402), (int(w-3*w*t))), "center")) # move from right to center
                 )

    start = start + 2
    end = end + 2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-04 20:21:59

做这件事有很多方法。例如,您可以执行如下操作:

代码语言:javascript
复制
clips = [
ImageClip(os.path.join(folder,pic))
         .resize(width=w*9.3/16)
         .set_start(index*2+1)
         .set_end(index*2+3)
         .set_pos(lambda t:(max((402), (int(w-3*w*t))), "center"))

    for index, pic in enumerate(picfiles)
]

它使用函数枚举。下面是一个例子,说明它是有效的。

代码语言:javascript
复制
list(enumarate(['a','b','c'])) = ((1, 'a'), (2, 'b'), (3, 'c'))

但是,在使用这种结构时,您应该非常清楚,因为它有时会导致无法理解的公式。对于您的代码,我认为它是可以的,但当您正在进行更复杂的计算时,常规循环通常更干净。

如果您的其他值是不相关的,也可以使用该构造(如您的示例所示,在循环indice、start和stop之间有一个简单的关系)。

代码语言:javascript
复制
[obj.setStart(start).setStop(stop) for obj, start, stop in objects, starts, stops]

你可以用你想要的方式定义开始和停止。在你的具体问题中,它应该是:

代码语言:javascript
复制
clips = [
ImageClip(os.path.join(folder,pic))
         .resize(width=w*9.3/16)
         .set_start(start)
         .set_end(stop)
         .set_pos(lambda t:(max((402), (int(w-3*w*t))), "center"))

    for start, stop, pic in 
    (
        itertools.count(1, step=2),
        itertools.count(3, step=2),
        enumerate(picfiles)
    )
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37634607

复制
相关文章

相似问题

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