in
オペレーター
in
演算子の代わりに演算子==
を使用することをお勧めします。in
演算子を使用すると、特定のアイテムがシーケンス/セットに含まれているかどうかを確認できます。
1 in [1,2,3] # True
1 in [2,3,4] # False
'a' in ['a','e','i','o','u'] # True
'a' in 'aeiou' # Also True
その他のコメント:
セット
この演算子は、「アイテム X はこのアイテム セットの一部である」種類の操作を迅速に実行できるように特別に設計されたデータ型であるin
とともに使用すると最も効率的です。set
vowels = set(['a','e','i','o','u'])
*は、dict にキーが存在するかどうかを確認する をdict
使用しても効率的です。in
文字列の反復
文字列は Python のシーケンス型です。つまり、長さを取得してからインデックスを使用するというすべての作業を行う必要はありません。文字列を反復処理するだけで、各文字を順番に取得できます。
例えば:
for character in my_string:
if character in vowels:
# ...
文字列でセットを初期化する
上記で、(少なくとも Python 2.x では) 事前設定された値でセットを作成するには、リストを使用する必要があることに気付いたかもしれません。これは、set()
型コンストラクターが一連の項目を取るためです。また、前のセクションで、文字列は Python のシーケンス、つまり文字のシーケンスであると述べたことに気付くかもしれません。
これが意味することは、一連の文字が必要な場合、実際にはそれらの文字の文字列をset()
コンストラクターに渡すだけでよいということです。単一文字の文字列をリストする必要はありません。つまり、次の 2 行は同等です。
set_from_string = set('aeiou')
set_from_list = set(['a','e','i','o','u'])
いいですね。:) ただし、文字のセットではなく文字列のセットを作成しようとしている場合、これはあなたを噛む可能性があることに注意してください。たとえば、次の 2 行は同じではありません。
set_with_one_string = set(['cat'])
set_with_three_characters = set('cat')
前者は 1 つの要素を持つセットです。
'cat' in set_with_one_string # True
'c' in set_with_one_string # False
一方、後者は 3 つの要素 (それぞれが文字) のセットです。
'c' in set_with_three_characters` # True
'cat' in set_with_three_characters # False
大文字と小文字の区別
文字の比較では、大文字と小文字が区別されます。'a' == 'A'
は False です'A' in 'aeiou'
。これを回避するには、入力を変換して、比較対象の大文字と小文字を一致させることができます。
lowercase_string = input_string.lower()