2016-10-01 3 views
2

したがって、2つのリストがあり、項目はさまざまです。項目のいくつかは同じですが、小文字/大文字です。どのようにループを作成してすべての項目を実行し、各項目で何かを実行すると、その項目がどのような場合にも無視されますか?大文字と小文字を区別しないリストの項目を比較する

fruits = ['Apple','banana','Kiwi','melon'] 
fruits_add = ['apple','Banana','KIWI','strawberry'] 

私はアイテムがfruitsになっていない場合は、fruits_addで各項目を通過し、fruitsに追加したループを作成します。しかし、'apple''Apple'のような項目は同じ項目として数える必要があります。

私は、個々のアイテムを異なるケースに変換する方法と、特定のアイテムが別のものと同一である(小文字を無視する)かどうかをチェックする方法を理解しています。私はどのようにすべての項目のためにこれを行うループを作成するのか分からない。他の言語のためではなく、Pythonの3のために同様の質問へ

見つかり答え

私の試み:

for fruit.lower() in fruits_add: 
    if fruit in fruits: 
     print("already in list") 

これは私にエラーを与える:

SyntaxError: can't assign to function call 

また、私はしましたリストを比較する前に、各リストのすべての項目を小文字に変換しようとしましたが、どちらも機能しません。

答えて

1

fruit.lower()は、あなたが何ができるか

が作成され..あなたは、関数呼び出しに割り当てることができない、動作しません。

fruit_addfruit.lower()は( fruitsから小文字の果物を含む) tセット内にない場合 fruitsに存在する果実の小文字のアイテムを保持し、そして、 fruitsappend補助構造体(ここで setfruits
t = {i.lower() for i in fruits} 
for fruit in fruits_add: 
    if fruit.lower() not in t: 
     fruits.append(fruit) 

今いる:

print(fruits) 
['Apple', 'banana', 'Kiwi', 'melon', 'strawberry'] 
-1

ここでlower()関数は使用しません。下のこのような 用途:エラーメッセージが示すようにループの中

for fruit in fruits_add: 
    if fruit.lower() in fruits: 
     print("already in list") 
+0

それは、大文字と小文字を区別しない両方のリストのためでなければなりません。 'fruit.lower()'のように 'apple'を与えますが、' Apple'は他のリストにあるので、一致しません。 –

+0

ああ、もちろん。その後、OPは新しいセットを作成する必要があります。 – enjoi

関連する問題