12に関連することがたくさんあるので、私は12という数字が好きです。1年は12か月あります。古代では、12時間(十二支)が1日の時間を表すために使用されていました。1つのエポックを使用して12年を表します。ギリシャには12の主要な神があり、干支には12の家があり、ゼカリアシキンの「地球クロニクル」は、12番目の天体(ニビル)に記載されています。さらに、友人、恋人、恋人や家族のストロークは次のとおりです。すべて12。 |
12に関連することがたくさんあるので、私は12という数字が好きです。1年は12か月あります。古代では、12時間(十二支)が1日の時間を表すために使用されていました。1つのエポックを使用して12年を表します。ギリシャには12の主要な神があり、干支には12の家があり、ゼカリアシキンの「地球クロニクル」は、12番目の天体(ニビル)に記載されています。さらに、友人、恋人、恋人や家族のストロークは次のとおりです。すべて12。したがって、12は忘れられない数字になる運命にあります。次に、忘れられない説明を12に追加します。Pythonリストを12の方法で組み合わせます。
実際、Pythonで2つ以上のリストをマージする方法は非常に簡単で、プラス記号(+)を直接使用するだけです。ただし、多くのシナリオでは、「+」を使用することは適切ではありません。リスト内の値は、何らかの理由で散在している、重複を排除する必要がある、または反復の過程にあるため、この記事では、2つ以上のリストを最大12の方法でマージする方法を読者に示します。
方法1:ユニバースの最初のプラス記号。これはPythonリストをマージする最も簡単な方法です。コードは次のとおりです。
list1 = [1、2、3] list2 = [4、5、6] 結果= list1 + list2 #[ 1、2、3、4、5、6 ] print(result)
この方法を説明する必要はありません。2つのリストを追加するのは問題ないため、直接追加するだけです。もちろん、10,000のリストを追加したり、ループに入れて累積し続けることもできます。
方法2:自動開梱と梱包のアスタリスク方式
Python 3.5以降、アスタリスク(*)には、リストを分割したり、複数の値をタプルにアセンブルしたりするという特別な目的があります。アスタリスクがリスト要素として使用され、このリスト要素もリストである場合、リスト内の値は要素として上位レベルのリストに直接挿入されます。コードは次のとおりです。
list1 = [1、2、3] list2 = [4、5、6] 結果= list1 + list2 #[ 1、2、3、4、5、6 ] print(result)
PS:二重星(**)は辞書を逆アセンブルできます。単一星と二重星が関数のパラメーターとして使用されている場合、それはボクシングです。離散値はタプル(単一星)と辞書(二重星)にアセンブルできます。星)。コードは次のとおりです。
import itertools list1 = [1、2、3] list2 = [ 4、5、6 ] #直接マージ #[ 1、2、3、4、5、6 ] result = [itertools.chain(list1、 list2)] print(result) #2つのリストをマージする場合、各リスト要素の値に1を追加します #[ 2、3、4、5、6、7 ] result = [item + 1 for item in itertools.chain(list1 、list2)] print(result)
方法3:誰でも「反復」しないように制御可能なマージ
リストをマージする最初の2つの方法は比較的単純ですが、問題は単純なマージしか実行できないことです。より複雑なマージ(マージプロセスで特定のリスト要素を処理するなど)を実行する場合は、実行できません。 。したがって、この場合、各リスト要素を繰り返し処理することができます。このマージメソッドを制御可能なマージと呼びます。コードは次のとおりです。
import itertools list1 = [1、2、3] list2 = [ 4、5、6 ] #直接マージ #[ 1、2、3、4、5、6 ] result = [itertools.chain(list1、 list2)] print(result) #2つのリストをマージする場合、各リスト要素の値に1を追加します #[ 2、3、4、5、6、7 ] result = [item + 1 for item in itertools.chain(list1 、list2)] print(result)
方法4:強制変換の有用性
チェーンクラスを使用すると、2つ以上のリストをチェーンオブジェクトに変換してから、チェーンオブジェクトをリストオブジェクトに変換できます。コードは次のとおりです。
itertoolsからimportchain list1 = [1、2、3] list2 = [ 4、5、6 ] result = list(chain(list1、list2)) #[ 1、2、3、4、5、6 ] print(result )
チェーンクラス構築メソッドのプロトタイプは次のとおりです。
def __init __(self、* iterables)
明らかに、構築メソッドのiterablesパラメーターは単一の星(*)を使用するため、任意の数のリストパラメーターを受け取ることができます。たとえば、chain(list1、list2、list3、list4、list5)は有効であるため、このメソッドはマージできます。任意の数のリスト。
方法5:重複する値は必要ありません
リストをマージする特別な方法、つまり重複排除があります。つまり、マージされた2つ以上のリストに重複する値がある場合、1つの同一の値のみを保持できます。実際、マージされた結果はコレクションになります。したがって、コレクションを使用してこの問題を解決できます。コードは次のとおりです。
list1 = [1、2、3] list2 = [4、3、6] result = list(set(list1 + list2)) #[ 1、2、3、4、6 ] print(result)
リストをマージするこの方法はプラス記号(+)を使用しますが、セットも使用するため、このマージ方法は特別な要件である重複排除を満たしているため、新しいマージ方法に属する必要があります。
方法6:ジェネレーターダファ
以前のメソッドはすべてPythonの既製のメカニズムを使用していましたが、今ではもう少し複雑になっています。カスタム変換関数です。
リストをマージするこの方法には、次のテクノロジが含まれます。
1.カスタムPython関数
2.関数パラメーターとしての単一の星(*)
3. Pythonジェネレーター(ジェネレーター)
4.型変換の実装
コードは次のように表示されます。
list1 = [1、2、3 ] list2 = [ 4、5、6] list3 = [7、8、9 ] list4 = [10、11、12 ] list5 = ["hello"、20.1、True] #結合関数、ジェネレーターでもあります def merge(* iters): for it in iters: yield from it result = list(merge(list1、list2、 'abcd'、[20、21、22]、list3、list4、list5)) # [1、2、3、4、5、6、「a」、「b」、「c」、「d」、20、21、22、7、8、9、10、11、12、「こんにちは」 、20.1、True] print(result)
このコードのマージは、ジェネレーター形式のマージ関数であり、パラメーターの型として単一のスター(*)を使用するため、任意の数のリストを渡すことができます。この例では、7つのリストをマージします。ここで、「abcd」は文字列形式のリストであり、各リスト要素は1文字です。
方法7:forin式をもう一度参照してください
Pythonは単純に極端なものを取り、式で提供します。これは式であり、ステートメントではないことに注意してください。したがって、他の式で使用できます。たとえば、for in式を使用してリストを生成する場合、コードは次のようになります。
list1 = [1、2、3] list2 = [4、5、6] #文字の場合、対応するASCIIが出力されます result = [ord(item)if str(item).isalpha()else item for item in(list1 + list2 + list( 'abcd')+ [20、21、22])] #[ 1、2、3、4、5、6、97、98、99、100、20、21、22 ] print(結果)
この方法は新しいリストをコピーするのに適しており、特定のリスト値はマージプロセス中に変更できます。
方法8:それ自体も変更できます
リストをマージするときに、リスト自体を変更する場合は、この方法を使用できます。たとえば、AとBの2つのリストをマージした後、A自体が最終的な変更結果になります。つまり、BがAの後ろに追加されます。実装コードは次のとおりです。
list1 = [1、2、3 ] list2 = [ 4、5、6 ] result = [] result.extend(list1) result.extend(list2) #[ 1、2、3、4、5、6 ] print(結果) #[ 1、2、3、4、5、6 ] list1.extend(list2) print(list1)
マージに参加しているリストを変更したくない場合は、空のリストを定義できます。
方法9:Pythonライブラリは良いことです、どこにでも宝物があります
Pythonには非常に大きな関数ライブラリがあり、その多くはリストのマージに使用されます。演算子モジュールのadd関数はその1つです。実際、addは内部でプラス記号(+)を使用してリストをマージしますが、これもadd関数は将来、他の方法を使用してリストをマージする可能性があるため、一種のメソッドと見なされます。コードは次のように表示されます。
import operator list1 = [1、2、3] list2 = [4、5、6] result = operator.add(list1、list2) #[ 1、2、3、4、5、6 ] print(result)
方法10:空のはるか遠く、目の前で閉じる
リストをマージするための一連のAPIを導入しました。実際、リストクラス(リスト)自体には、2つのリストをマージするための__add__メソッドがあります。コードは次のとおりです。
list1 = [1,2,3] list2 = [4,5,6] 結果= list .__ add __(list1、list2) #[ 1、2、3、4、5、6 ] print(result)
方法11:従来の方法
これは、リストをマージするための非常に多くの方法を導入する最も伝統的な方法です。実際、最も伝統的な方法は、リストの追加メソッドである要素を1つずつ追加することです。非常に多くの学生が質問するかもしれません、非常に多くの良い方法があります、なぜあなたは要素を一つずつ追加したいのですか?それは効率に影響しますか?実際、それは状況に依存します。たとえば、一部のシーンでは、リストの値が(他のサービスを処理するために)逆アセンブルされ、その後、appendメソッドを使用してリストが1つずつ追加されます。とにかく、リストは逆アセンブルされ、ホワイトニングは追加されません。
実装コードは次のとおりです。
list1 = [1,2,3] list2 = [4,5,6] result = [] for elem in list1: result.append(elem) for elem in list2 :result.append(elem) #[1、2、 3、4、5、6] print(result)
方法12:合併方法だけでは不十分で、対外援助が集まる
実際、Pythonでリストをマージする方法はたくさんあります。11種類しかないようです。前述のように、12種類あります。12種類を構成するために、これが対外援助です。これがNumPyです。 。このライブラリは主に科学計算に使用されます。データの処理は比較的強力です。PythonリストをNumPyとマージするコードは次のとおりです。
import numpy list1 = [1,2,3] list2 = [4,5,6] result = numpy.concatenate([list1、list2])。tolist() print(result)
numpy.concatenate関数はnumpy.ndarray型を返すため、Pythonリストオブジェクトを取得するには、tolistメソッドを使用して変換する必要もあります。NumPyはサードパーティのライブラリであるため、次のコマンドを使用してインストールする必要があります。
pip install numpy