2016-10-06 15 views
0

このロジックを1行の文で書くことはできますか?pythonの1行文forループelse if

B = [] 
for book in books: 
    if book not in B: 
     B.append(book) 

私はこれを試してみましたが、それは偽です:

B = [book if book not in B for book in books] 

の内側には、変数を参照する方法はありますか?

+4

あなたは 'B =セット(ブック)を意味するかトリックを行う必要がありますか' ...? – deceze

+0

はいそれは@deceze –

+1

@decezeは 'B = list(set(books))'を使用していました。 –

答えて

-3
B=[book for book in books if not book in B] 

+0

私はこのコードを気にしましたが、Bの本は複製されています。 –

+2

@pietà 'B'はこの理解が行われた後でしか定義されていないからです。これは実際には 'NameError:name 'B' not not defined'で失敗します。以前に 'B = []'を定義しておけば、そのエラーを回避することができます。 – deceze