違いの観点からリストから最も近い要素をグループ化する

sharathchandramandadi

以下のリストがあります:

tst = [1,3,4,6,8,22,24,25,26,67,68,70,72]

上記のリストの要素を、リスト内の連続する要素の違い(1または2の違い)に基づいて、別々のグループ/リストにグループ化したい。

連続する要素間の差が4を超える場合、要素は別個のリストを形成する必要があります。

上記の入力から期待される出力は次のとおりです。

[[1, 3, 4, 6, 8], [22, 24, 25, 26], [67, 68, 70, 72]]

私は完璧なアプローチではないと思う次のコードを試しました。

def lsp(litt):
    lia = []
    for i in range(len(litt)-1):
        if len(litt)>=2:
            if litt[i+1]-litt[i] >= 4:
                lia.append(litt[i])

    litti = []
    for i in lia:
        if i in litt:
            litti.append(litt.index(i))
    litti.insert(0,0)

    littil = []
    for i in range(len(litti)-1):
        littil.append([litti[i],litti[i+1]])

    t1 = []
    for i,j in enumerate(littil):
        t2 = []
        if i==0:
            t2.append([j[0], j[1]])
        if i!=0:
            t2.append([j[0]+1,j[1]])
        t1.append(t2)
    t1 = [i for j in t1 for i in j]

    fl = []
    for i,j in t1:
        fl.append(litt[i:j+1])
    fl.append(litt[t1[-1][1]+1:])
    return fl

itertools.groupbyを使用してこれを実現したいのですが、その方法がわかりません。

iGian

私はこの方法が好きで、スライスメソッドを定義し、ラムダ述語を渡します。

def slice_when(predicate, iterable):
  i, x, size = 0, 0, len(iterable)
  while i < size-1:
    if predicate(iterable[i], iterable[i+1]):
      yield iterable[x:i+1]
      x = i + 1
    i += 1
  yield iterable[x:size]

tst = [1,3,4,6,8,22,24,25,26,67,68,70,72]
slices = slice_when(lambda x,y: y - x > 2, tst)
print(list(slices))
#=> [[1, 3, 4, 6, 8], [22, 24, 25, 26], [67, 68, 70, 72]]

多くの場合に役立ちます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

特性の観点から最も近い3つを見つける

分類Dev

辞書のリストから最も近い要素を取得します

分類Dev

リストから特定のターゲットに最も近いベクトルを取得する方法

分類Dev

パフォーマンスの観点からスクリプトを最適化する方法

分類Dev

レイテンシーの観点から最も近いマシンを見つける方法

分類Dev

点の配列から最も近い点を見つける

分類Dev

与えられた数で最も近いものから最も遠いものへ配列をソートするアルゴリズム

分類Dev

線に最も近い点のセットから点を見つけるための最速のアルゴリズムは何ですか?

分類Dev

Python:タプルのリストから最も近い一致を検索します

分類Dev

テーブルの最も近い行からテキストエリアの値を見つける

分類Dev

グループ化した後、パンダpythonで各グループから最も近いものを見つけます

分類Dev

リストから最も近い日付を見つける

分類Dev

リストから最も近い日時を取得します

分類Dev

フォールドの観点からリストの長さを定義することについて

分類Dev

他の要素からの距離に基づいてPythonでリストの要素をグループ化するにはどうすればよいですか?

分類Dev

Haskell-デカルトグリッドで特定の最も近い隣人をグループ化する

分類Dev

DateTimeのリストから最も近い前のDateTimeを見つけます

分類Dev

タプルのリストから、要素間の差が最も大きいタプルを取得します

分類Dev

リストから最も近い文字列の一致を見つける

分類Dev

2つの配列リストから最も近い数を見つける

分類Dev

ベクトルのリストから最も近いベクトルを見つける| Python

分類Dev

最も近い値を使用してリストからテーブルを作成しますか?

分類Dev

最も近いテーブルからすべての行を削除するJquery

分類Dev

javascriptで最も近いli要素からpreタグにidを追加する方法

分類Dev

numpyのリストから最も近い値にクリップする方法は?

分類Dev

シナリオの観点から見たWebSocketとFlaskストリーミングの違い

分類Dev

2つのテーブルから最も近いDateTimeを取得する方法

分類Dev

整数のリストの要素を符号でグループ化する最も速い方法は?

分類Dev

リストからユーザーの場所に最も近いGpsポイントを見つける

Related 関連記事

  1. 1

    特性の観点から最も近い3つを見つける

  2. 2

    辞書のリストから最も近い要素を取得します

  3. 3

    リストから特定のターゲットに最も近いベクトルを取得する方法

  4. 4

    パフォーマンスの観点からスクリプトを最適化する方法

  5. 5

    レイテンシーの観点から最も近いマシンを見つける方法

  6. 6

    点の配列から最も近い点を見つける

  7. 7

    与えられた数で最も近いものから最も遠いものへ配列をソートするアルゴリズム

  8. 8

    線に最も近い点のセットから点を見つけるための最速のアルゴリズムは何ですか?

  9. 9

    Python:タプルのリストから最も近い一致を検索します

  10. 10

    テーブルの最も近い行からテキストエリアの値を見つける

  11. 11

    グループ化した後、パンダpythonで各グループから最も近いものを見つけます

  12. 12

    リストから最も近い日付を見つける

  13. 13

    リストから最も近い日時を取得します

  14. 14

    フォールドの観点からリストの長さを定義することについて

  15. 15

    他の要素からの距離に基づいてPythonでリストの要素をグループ化するにはどうすればよいですか?

  16. 16

    Haskell-デカルトグリッドで特定の最も近い隣人をグループ化する

  17. 17

    DateTimeのリストから最も近い前のDateTimeを見つけます

  18. 18

    タプルのリストから、要素間の差が最も大きいタプルを取得します

  19. 19

    リストから最も近い文字列の一致を見つける

  20. 20

    2つの配列リストから最も近い数を見つける

  21. 21

    ベクトルのリストから最も近いベクトルを見つける| Python

  22. 22

    最も近い値を使用してリストからテーブルを作成しますか?

  23. 23

    最も近いテーブルからすべての行を削除するJquery

  24. 24

    javascriptで最も近いli要素からpreタグにidを追加する方法

  25. 25

    numpyのリストから最も近い値にクリップする方法は?

  26. 26

    シナリオの観点から見たWebSocketとFlaskストリーミングの違い

  27. 27

    2つのテーブルから最も近いDateTimeを取得する方法

  28. 28

    整数のリストの要素を符号でグループ化する最も速い方法は?

  29. 29

    リストからユーザーの場所に最も近いGpsポイントを見つける

ホットタグ

アーカイブ