2017-04-19 66 views
0

我已经编写了一个Pygame模块,它可以对淡入,淡出,放大,缩小,旋转等文本进行视频特效。程序工作正常。我想写一个演示,突出显示模块的所有可能性。所有效果如下。制作组合列表中的每个项目的项目

import copy 

zoom = ["in", "out"] 
fade = ["in", "out"] 
rotate = ["left", "right"] 
slide = ["in left", "in right", "in top", "in bottom","out left", "out right", "out top", "out bottom"] 

我需要每个效果每种类型与所有其他类型的变焦例外淡出每个效果加入并缩小淡入不多大意义视觉。我需要这些效果,这些效果是四个到一个组,按照缩放,淡入淡出,旋转,幻灯片的顺序,在特定格式的单独列表中(temp = [None,None,None,None]。一个时隙将是毫无。一个例子在下面给出。

(zoom = "out", rotate = "left", fade = "out", slide = "out top") 

这是我到目前为止的代码。

functions_main = [zoom, fade, rotate, slide] 
function_list = [] 
temp = [None, 
for count, item in enumerate(functions_main): 
    for part in item: 
     t = copy.copy(temp) 
     t[count] = part 
     function_list.append(t) 

这一次使我的每个项目的每个组中。如下所示。

['in', None, None, None] 
['out', None, None, None] 
[None, 'in', None, None] 
[None, 'out', None, None] 
[None, None, 'left', None] 
[None, None, 'right', None] 

等等 如何获取其余项目?例如放大,淡入,向左旋转,没有一张是("in", "in", "left", None)

+0

如果我理解正确,你会想要所有可能的组合?如果是,请查看https://docs.python.org/2/library/itertools.html#itertools.product –

+0

我试过了,但可能不正确,因此未定。我会给它一个镜头。感谢您指出正确的方向并清除我的疑问。 – emorphus

回答

0

我加None到每个列表,使组合更加容易:

zoom = ["in", "out", None] 
fade = ["in", "out", None] 
rotate = ["left", "right", None] 
slide = ["in left", "in right", "in top", "in bottom","out left", "out right", "out top", "out bottom", None] 

result = [[i, j, k, l] for i in zoom for j in fade for k in rotate for l in slide if not ((i == 'in' and j == 'out') or (j == 'in' and i == 'out'))]