2017-03-22 5 views
1

私は左右の括弧をペアにするための少し練習プログラムを書いています。どのように入れ子のfor/ifを1行に減らすことができますか?私はpure += [char for char in expression if char in brackets else '']を試しましたが、動作しません。ここに私が削減したい完全なコードがあります。Pythonでこのネストされた条件を1行に減らすにはどうすればよいですか?

def pair(expression): 
     left=("(","[","{") 
     right=(")","]","}") 
     brackets=left+right 
     print(brackets) 
     pure='' 

     #the part I want to reduce 
     for char in expression: 
      if char in brackets: 
       pure+=char 
+1

'純粋= '' .join([式のcharの文字カッコ内の文字場合])'まさにこのプログラムを何 –

+2

はところでオブジェクト指向 – Rico

+0

んはい、私は@Ricoに同意します。あなたの親のマッチャーは少し傷ついているようです。 –

答えて

2

これは、他の人がコメントで指摘したように、これはまったく目的を果たしませんが、あなたが

''.join([_ if _ in brackets else '' for _ in expression]) 

探しているものを行う必要があります。

フル機能の

def pair(expression): 
    left = ("(", "[", "{") 
    right = (")", "]", "}") 
    brackets = left + right 
    print(brackets) 
    pure = ''.join([_ if _ in brackets else '' for _ in expression]) 
+0

ありがとうございました。なぜ「適切な」変数名の代わりに '_'を使うのですか? – pkqxdd

+0

_は一時的な投棄変数の典型的な名前です。これは、この行を超えて使用されることを意味しません。 'x'や 'char'という名前をつけた場合、この関数の後にこの関数の後に 'x'や 'char'という別の変数を持つことはできません。 – Anoop

+0

絶対に使用しない変数には '_'を使うべきです。この例では使用されているので、適切に名前が付けられていれば、コードを読みやすくなります。コードをあなたや他の人に後で分かりやすくするためには、未使用の変数に名前を付けることをお勧めします。 –

関連する問題