Python では、文字列は一連の文字であり、リストは文字列を含む任意のデータ型の要素のコレクションです。 引き算 文字列リストの作成には、2 つの文字列リストに共通する要素の削除が含まれます。 リスト または 文字列 。
ある文字列リストを別の文字列リストから減算するには、 'セット' Python のデータ型。セット データ型は、一意の要素の順序付けされていないコレクションです。減算演算子 「-」 2 つのセット間で使用すると、2 番目のセットには存在しない最初のセットの要素を見つけることができます。
例:
以下は、set データ型を使用して、ある文字列リストから別の文字列リストを減算する例です。
文字列の日付を変換する
list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = list(set(list1) - set(list2)) print(result)
出力:
['apple', 'cherry']
上の例では、2 つのリストを定義します。 'シート1' そして 'リスト2' 。その後、次を使用して各リストをセットに変換します。 'セット' Pythonの関数。その後、私たちは、 「-」 の要素を減算する演算子 'リスト2' から 'シート1' 。最後に、結果のセットをリストに変換し直します。 'リスト' Pythonの関数。
これにより、新しいリストが作成されます '結果' の要素が含まれている 'シート1' に存在しないもの 'リスト2' 、この場合は 'りんご' そして 'チェリー' 。
例:
以下は、単一の文字列から文字列のリストを減算する方法を示す別の例です。
string1 = 'Hello world!' list1 = ['o', 'l', 'd'] result = ''.join([char for char in string1 if char not in list1]) print(result)
出力:
'He wr!'
上の例では、文字列を定義します。 '文字列1' そして文字列のリスト 'シート1' 。その後、リスト内包表記を使用して、次の各文字を反復処理します。 '文字列1' それが存在するかどうかを確認してください 'シート1' 。キャラクターが入っていない場合 'シート1' を使用して新しいリストに追加します。 '参加する' 方法。最後に、結果のリストを文字列に変換します。
これにより、新しい文字列が生成されます '結果' の文字のみが含まれる '文字列1' に存在しないもの 'シート1' 、この場合は 「ひ」、「え」、「」、「わ」 、 そして 「r」 。
結果として得られるリストまたは文字列内の要素の順序は保持されない可能性があることに注意してください。順序を保持する必要がある場合は、リスト内包表記を使用できます。 'もし' ステートメントを使用して、2 番目のリストに存在する要素をフィルターで除外します。
NFAの例
例:
list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = [item for item in list1 if item not in list2] print(result)
出力:
['apple', 'cherry']
上の例では、2 つのリストを定義します。 'シート1' そして 'リスト2' 。その後、リスト内包表記を使用して、次の各要素を反復処理します。 'シート1' それが存在するかどうかを確認してください 'リスト2' 。要素が存在しない場合 'リスト2' 、新しいリストに追加します。最後に、次の要素を含む結果のリストを出力します。 'シート1' に存在しないもの 'リスト2' 。
その他の情報:
セット データ型とリスト データ型:
前述したように、文字列リストを減算するときは、リストをセットに変換することをお勧めします。これは、要素の存在を確認し、重複を削除するためにセットが最適化されているためです。ただし、要素の順序を保持することが重要な場合は、代わりにリスト内包表記を使用した方がよい場合があります。
パフォーマンスに関する考慮事項:
リストをセットに変換することは、特に大きなリストの場合、計算コストのかかる操作になる可能性があります。パフォーマンスが懸念される場合は、リスト内包表記やジェネレーター式などの代替アプローチの使用を検討することをお勧めします。
可変性:
セットは次のようなものであることに注意することが重要です。 可変 、文字列と タプル (反復可能なデータ型としても使用できます) は使用できません。つまり、あるセットを別のセットから減算すると、結果のセットは次のようになります。 可変 、その内容を変更できます。一方、リストまたはタプルを別のリストまたはタプルから減算する場合、結果のリストまたはタプルは変更不可能であり、その内容を変更することはできません。
ネストされたリスト:
ネストされたリストを使用している場合は、ネストされたループまたは再帰を使用して、あるリストから別のリストを減算する必要がある場合があります。以下に例を示します。
Javaでこんにちは世界
list1 = [['apple', 'banana'], ['cherry', 'orange']] list2 = [['banana', 'kiwi'], ['cherry', 'pear']] result = [] for sublist1, sublist2 in zip(list1, list2): subresult = [item for item in sublist1 if item not in sublist2] result.append(subresult) print(result)
出力:
[['apple'], ['orange']]
上の例では、2 つのネストされたリストを定義します。 'シート1' そして 'リスト2' 。その後、for ループを使用して、サブリストの各ペアを反復処理します。 'シート1' そして 'リスト2' 。リスト内包表記を使用して、次の各サブリストの要素を減算します。 'リスト2' ' の対応するサブリストから 葉1' 。最後に、結果のサブリストを新しいリストに追加します。 '結果' 。