2016-03-31 16 views
0

iss_answer配列のwhatsに基づいてall_cardsからアイテムを削除する関数を作成しようとしています。私のiss_answer配列は私のプログラムで頻繁に変更されるので、all_cards.remove( 'Professor Plum'、 'Dinning Room'、 'Rope')だけをタイプすることはできません。速くないリストcomprehension-ちょうど必要とストリップ先頭と末尾のスペースすべての使用のリスト内包した後ならば、両方のリストに一致する単語のケースを変更するのはなぜ別の配列のwhatsに基づいてアイテムを削除する - python

iss_answer = ['Professor Plum','Dinning Room','Rope'] 

def computer_1(array): 

    all_cards = ['professor plum','colonel mustard', 
       'mrs. white','mr. green','miss scarlet', 
       'mrs. peacock', 'revolver','wrench', 
       'candle stick','lead pipe','knife','rope', 
       'kitchen','hall','dinning room','lounge', 
       'study','billiard room', 
       'conservatory','library','ballroom'] 

    all_cards.remove(iss_answer) 
    print all_cards  


    return all_cards 

computer_1(iss_answer) 

答えて

1

iss_answer = ['Professor Plum','Dinning Room','Rope'] 

def computer_1(array): 

    all_cards = ['professor plum','colonel mustard', 
       'mrs. white','mr. green','miss scarlet', 
       'mrs. peacock', 'revolver','wrench', 
       'candle stick','lead pipe','knife','rope', 
       'kitchen','hall','dinning room','lounge', 
       'study','billiard room', 
       'conservatory','library','ballroom'] 

    s = [i for i in all_cards if i.strip().lower() not in map(str.strip,map(str.lower,iss_answer))] 
    print s  


    return s 

computer_1(iss_answer) 

出力 -

['colonel mustard', 'mrs. white', 'mr. green', 'miss scarlet', 'mrs. peacock', 'revolver', 'wrench', 'candle stick', 'lead pipe', 'knife', 'kitchen', 'hall', 'lounge', 'study', 'billiard room', 'conservatory', 'library', 'ballroom'] 

しかし、セットが順序付けられていないデータ構造であるので、あなたが@bakkalとしての答えを使用することができ、出力リストの要素を、秩序を維持する必要がない場合と@Saif Asifが述べた。 More at here

1

使用Sets複雑に

difference = list(set(all_cards) - set(iss_answer)) 
を削減します
関連する問題