如何将此代码转换为列表解析?

时间:2017-03-04 04:18:24

标签: python-2.7 list list-comprehension

我在Python2.7中有这个代码,我想(如果可能的话)将这段代码转换成列表理解。

z=[]
if p==1:
    z.append('a')
    if m==2:
        z.append('b')

print ''.join(z)

问题是当我转换代码时,它给我一个错误(语法错误):

z=['b' if m==2 'a' if p==1]

print ''.join(z)

z=['a' if p==1 'b' if ==m]

print ''.join(z)

如果此问题有重复,请与我们联系。 我很感激你的意见。

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题。我想出了一个使用enumerate和内联if语句来解释两个if语句之间差异的解决方案。老实说,使用list comp会对代码进行模糊处理,只需坚持使用更简单的if语句就可以了。

values = ['a', 'b'] # put the append arguments in here, you can also inline this but I put it apart to make the line shorter
z = [val for idx, val in enumerate(values) if (m==2 and p==1 if idx==1 else p==1)]