我在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)
如果此问题有重复,请与我们联系。 我很感激你的意见。
答案 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)]