2017-03-04 21 views
0

私はこのコードをPython2.7で使用しています。可能であれば、このコードをリストの理解に変換したいと考えています。このコードをリストの理解に変換するにはどうすればよいですか?

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

print ''.join(z) 

それとも

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

print ''.join(z) 

は、この質問がある場合は私に知らせてください:

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

print ''.join(z) 

問題は、私は、このようなコードを変換するとき、それは私にエラー(構文エラー)を与えるです重複 私はあなたの助言に感謝します。

答えて

1

これはトリッキーなものです。 enumerateとインラインifステートメントを使用して、2つのifステートメントの違いを説明するソリューションを考え出しました。正直なところ、このためのリストコンプリートを使用すると、おそらくコードがわかりにくくなり、既に持っているより単純な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)] 
関連する問題