配列にエレガントな方法で配列が含まれているかどうかを確認するにはどうすればよいですか?

アンナ・リシェン

これがPythonの私のコードで、大きな配列の小さなサブ配列がサブ配列の1つにあるかどうかをチェックします。どちらが最大のサブ配列のインデックスかわからないため、インデックスと比較できません。たぶん、並べ替えるのは良いことです。しかし、複数の大きなサブアレイがある場合はどうでしょうか。つまり、最終的な配列には、小さなサブ配列を含む大きなサブ配列だけを入れたいのです。

[[1, 2, 3], [4, 5, 6], [1, 2, 3, 4, 5, 6], [7,8], [9, 10, 11, 12], [7, 8, 9, 10, 11, 12]]

次に、要素の順序がランダムになる可能性がある場合はどうすればよいですか。例: [[1, 3, 2], [4, 5, 6], [1, 2, 3, 4, 5, 6], [7,8], [9, 10, 11, 12], [7, 8, 9, 10, 11, 12]]

これが私のコードです:

arr1 = [[1, 2, 3], [4, 5, 6], [1, 2, 3, 4, 5, 6], [7,8], [9, 10, 11, 12],  [7, 8, 9, 10, 11, 12]]

arr2 = []
arrInd = 0
arrInd2 = len(arr1)
for k in arr1:
    for n in reversed(arr1):
        if set(n).issubset(set(k)):
            arr2.append(k)

print(arr2)

出力として表示したい:

[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]

しかし、私は持っています:

[[4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [7, 8], [9, 10, 11, 12], [7, 8, 9, 10, 11, 12], [7, 8, 9, 10, 11, 12], [7, 8, 9, 10, 11, 12]]

更新

良い質問がたくさんあったので、もう少し詳細を追加する必要があります。

1)配列の配列があります:arr1 = [[]]2)これらのようないくつかのサブ配列が含まれています[1, 2, 3], [4, 5, 6], [4, 6, 5], [7, 8, 9, 10, 11, 12], [11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13, 14, 15], [111, 222, 333], [444, 555], [777, 888], [111, 222, 333, 444, 555], [111, 222, 333, 444, 555, 777, 888], [1000, 2000, 3000]何が可能ですか?:1)内部の配列順序は変更される場合があります[4, 5, 6], [4, 6, 5]し、[1, 2, 3, 4, 5, 6]のような、でも文字があるかもしれません(私は現在テストしてい)、それは実際のデータでは実際には、番号順ではありませんので、A77B812)大きな配列と小さな配列があり、常に最大の配列(または複数)があり、他の最大の配列と交差することはありません。したがって、ここ[1, 2, 3, 4, 5, 6][7, 8, 9, 10, 11, 12, 13, 14, 15]-それらは互いに交差できませんが、いくつかのミニサブ配列が含まれています。3)各大きなサブアレイには、いくつかの小さなサブアレイが含まれています。ただし、それらのすべてと一部の小さなアレイが独立して存在できるわけではありません。例:[1, 2, 3, 4, 5, 6]が含まれ[1, 2, 3], [4, 5, 6], [4, 6, 5]ていますが、[7, 8, 9, 10, 11, 12], [11, 12, 13, 14, 15]またはが含まれていません[111, 222, 333]; 4)中間の「大きな配列」も存在する可能性があります。これ[111, 222, 333, 444, 555]に比べて小さい[111, 222, 333, 444, 555, 777, 888]ため、最初の配列を[111, 222, 333, 444, 555]除外する必要があります。5 *)arr2ケース***[1000, 2000, 3000]からarr2(最終配列)除いて、大きな配列を(最終配列)に一度も小さくせずに追加したい

私のコードは何をするはずでしたか?それは最初から最後まで行くように、要素はk個の要素を含み、その逆Nかどうかを検出するためにARR1通過し、互いに異なる要素に対向するようになっていたfor k in arr1:と終了から開始へfor n in reversed(arr1):

更新2。長さの比較!

if len(n) < len(k):

    for k in arr1:
        for n in reversed(arr1):
            if len(n) < len(k):
                if set(n).issubset(set(k)):
                    arr2.append(k)

そして、それははるかに近いです。実はほぼそれですが、その量から判断すると重複しているので、次数(1)の問題は全く問題ないようです。

arr2 = [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13, 14, 15], [7, 8, 9, 10, 11, 12, 13, 14, 15], [111, 222, 333, 444, 555], [111, 222, 333, 444, 555], [111, 222, 333, 444, 555, 777, 888], [111, 222, 333, 444, 555, 777, 888], [111, 222, 333, 444, 555, 777, 888], [111, 222, 333, 444, 555, 777, 888]]

もちろん、重複の削除を開始し、そのような方法でarr2を再度実行して[111, 222, 333, 444, 555]実際にはの一部で[111, 222, 333, 444, 555, 777, 888]あるものを削除することは可能ですが、よりエレガントな方法が必要です。

アルフェ

それで、別のリストにもある要素のみを含むすべてのリストを削除しようとしていますか?

def eachMasterList(allLists):
  allSets = [ set(lst) for lst in allLists ]
  for lst, s in zip(allLists, allSets):
    if not any(s is not otherSet and s < otherSet for otherSet in allSets):
      yield lst

この関数を使用するには、次のことを試してください。

print(list(eachMasterList([[1, 2, 3], [4, 5, 6], [1, 2, 3, 4, 5, 6], [7,8], [9, 10, 11, 12], [7, 8, 9, 10, 11, 12]])))

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

配列リストの配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

javascript配列に特定の配列がすでに含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

PHPで配列に他の配列のみが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列に別の配列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

リストにバイト配列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

numpy配列に数値のリストが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

TextViewに配列からの文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

TypeScriptで配列に文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

JavaScript / jQueryで配列に特定の文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列にFirestoreで2つの特定の文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

文字列にRubyで配列の一部が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

json配列にすでに特定のキーが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列値が文字列に含まれているかどうかを確認して削除するにはどうすればよいですか?

分類Dev

混合配列に文字列要素が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列に同じ未知の文字列が2つ以上含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

文字列が配列に含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列にJavascriptの文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

TextViewにString配列の文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

文字列に配列の文字のみが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列に部分文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

javascriptを使用して、配列に値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

JavaScriptで配列に値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列にtypescript内にnull値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

配列を含むifステートメント。配列の整数が0かどうかを確認するにはどうすればよいですか?

分類Dev

配列がプレーンな組み込み配列であるかどうかを確認するにはどうすればよいですか?

分類Dev

配列にJavaの特定の値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

numpy配列に整数が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

Perl配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

3つの配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

Related 関連記事

  1. 1

    配列リストの配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

  2. 2

    javascript配列に特定の配列がすでに含まれているかどうかを確認するにはどうすればよいですか?

  3. 3

    PHPで配列に他の配列のみが含まれているかどうかを確認するにはどうすればよいですか?

  4. 4

    配列に別の配列が含まれているかどうかを確認するにはどうすればよいですか?

  5. 5

    リストにバイト配列が含まれているかどうかを確認するにはどうすればよいですか?

  6. 6

    numpy配列に数値のリストが含まれているかどうかを確認するにはどうすればよいですか?

  7. 7

    TextViewに配列からの文字列が含まれているかどうかを確認するにはどうすればよいですか?

  8. 8

    TypeScriptで配列に文字列が含まれているかどうかを確認するにはどうすればよいですか?

  9. 9

    JavaScript / jQueryで配列に特定の文字列が含まれているかどうかを確認するにはどうすればよいですか?

  10. 10

    配列にFirestoreで2つの特定の文字列が含まれているかどうかを確認するにはどうすればよいですか?

  11. 11

    文字列にRubyで配列の一部が含まれているかどうかを確認するにはどうすればよいですか?

  12. 12

    json配列にすでに特定のキーが含まれているかどうかを確認するにはどうすればよいですか?

  13. 13

    配列値が文字列に含まれているかどうかを確認して削除するにはどうすればよいですか?

  14. 14

    混合配列に文字列要素が含まれているかどうかを確認するにはどうすればよいですか?

  15. 15

    配列に同じ未知の文字列が2つ以上含まれているかどうかを確認するにはどうすればよいですか?

  16. 16

    文字列が配列に含まれているかどうかを確認するにはどうすればよいですか?

  17. 17

    配列にJavascriptの文字列が含まれているかどうかを確認するにはどうすればよいですか?

  18. 18

    TextViewにString配列の文字列が含まれているかどうかを確認するにはどうすればよいですか?

  19. 19

    文字列に配列の文字のみが含まれているかどうかを確認するにはどうすればよいですか?

  20. 20

    配列に部分文字列が含まれているかどうかを確認するにはどうすればよいですか?

  21. 21

    javascriptを使用して、配列に値が含まれているかどうかを確認するにはどうすればよいですか?

  22. 22

    JavaScriptで配列に値が含まれているかどうかを確認するにはどうすればよいですか?

  23. 23

    配列にtypescript内にnull値が含まれているかどうかを確認するにはどうすればよいですか?

  24. 24

    配列を含むifステートメント。配列の整数が0かどうかを確認するにはどうすればよいですか?

  25. 25

    配列がプレーンな組み込み配列であるかどうかを確認するにはどうすればよいですか?

  26. 26

    配列にJavaの特定の値が含まれているかどうかを確認するにはどうすればよいですか?

  27. 27

    numpy配列に整数が含まれているかどうかを確認するにはどうすればよいですか?

  28. 28

    Perl配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

  29. 29

    3つの配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

ホットタグ

アーカイブ