파이썬의 모든 조합 목록에서 색인의 요소 조합을 아는 방법

리자 베타

일부 목록에서 모든 쌍 조합이 있습니다.

a = [1,2,3,4,5,6]
pairs = [pair for pair in itertools.combinations(a,2)]
print pairs

>>>[(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]

인덱스 만 알고있는 경우 정확히 어떤 쌍으로 작업하는지 어떻게 알 수 있습니까? 공식이 있나요? 문제는 내 목록이 너무 커서 모든 쌍을 기억할 수 없다는 것입니다. 색인으로 인식 할 수있는 특정 쌍만 필요합니다.

어떤 제안?

감사!

PM 2 링

인덱스에서 직접 쌍을 생성하는 방법이 있습니다. 아마도 이것에 대한 더 효율적인 방정식이있을 것입니다. 그러나 이것이 제가 몇 분 후에 생각 해낸 것입니다. :)

import itertools

def pair_from_index(a, i):
    m = n = len(a) - 1
    while i >= n:
        i -= n
        n -= 1
    m -= n
    return a[m], a[m + i + 1]

# test

a = list('abcdefg')

for i, t in enumerate(itertools.combinations(a, 2)):
    print(i, t, pair_from_index(a, i))

산출

0 ('a', 'b') ('a', 'b')
1 ('a', 'c') ('a', 'c')
2 ('a', 'd') ('a', 'd')
3 ('a', 'e') ('a', 'e')
4 ('a', 'f') ('a', 'f')
5 ('a', 'g') ('a', 'g')
6 ('b', 'c') ('b', 'c')
7 ('b', 'd') ('b', 'd')
8 ('b', 'e') ('b', 'e')
9 ('b', 'f') ('b', 'f')
10 ('b', 'g') ('b', 'g')
11 ('c', 'd') ('c', 'd')
12 ('c', 'e') ('c', 'e')
13 ('c', 'f') ('c', 'f')
14 ('c', 'g') ('c', 'g')
15 ('d', 'e') ('d', 'e')
16 ('d', 'f') ('d', 'f')
17 ('d', 'g') ('d', 'g')
18 ('e', 'f') ('e', 'f')
19 ('e', 'g') ('e', 'g')
20 ('f', 'g') ('f', 'g')

여기에 길이가 500 인 목록에서 이전 버전보다 약 10 배 빠른 개선 된 버전이 있으며 더 큰 목록에서 훨씬 더 효율적이어야합니다.

def pair_from_index(a, i):
    n = len(a) - 1
    m = n * (n + 1) // 2
    y = m - i - 1
    d = 1 + int(((8*y + 1) ** 0.5 - 1) / 2)
    k = n - d
    return a[k], a[1 + i + k + d * (d + 1) // 2 - m]

어떻게 작동하는지 완전히 설명하지는 않겠지 만 삼각수를 사용 합니다 .

T (x)를 x 번째 삼각수, 즉 1에서 x까지의 수의 합이라고합시다. T (x)의 공식은 간단합니다.

T(x) = x * (x + 1) / 2

y = T (x)가 주어지면 위의 공식을 반전하여 x를 계산할 수 있습니다.

x = (8*y + 1) ** 0.5 - 1) / 2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록에서 두 요소의 모든 조합을 찾는 가장 효율적인 방법

분류에서Dev

파이썬에서 결과 숫자와 동일한 목록의 모든 수학적 조합을 얻는 방법

분류에서Dev

파이썬에서 주어진 조건을 기반으로 목록의 두 요소를 결합하는 방법

분류에서Dev

R의 여러 목록에서 다중 요소 인덱스의 모든 조합을 "결합"하는 더 좋은 방법은 무엇입니까?

분류에서Dev

배열 목록의 요소에서 모든 조합 검색

분류에서Dev

반복되는 요소없이 목록의 모든 조합을 얻는 방법은 무엇입니까?

분류에서Dev

서로 인접한 두 요소가 하나의 요소가 될 수있는 목록의 모든 조합을 얻는 방법

분류에서Dev

파이썬에서 2 개의 큰 목록의 가능한 모든 조합을 효율적으로 분석하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 배열의 모든 조합의 곱을 얻는 방법은 무엇입니까?

분류에서Dev

두 개 이상의 텐서 요소의 모든 조합을 생성하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 문자열 벡터 사이의 모든 조합을 찾는 방법

분류에서Dev

파이썬에서 목록의 모든 조합 찾기

분류에서Dev

파이썬에서 목록의 모든 조합 찾기

분류에서Dev

파이썬에서 두 목록의 가능한 모든 값 조합을 사용하여 방정식을 풀기위한 일반화 된 방법을 모색

분류에서Dev

파이썬의 다른 열 행에서 필요한 조합을 얻는 방법

분류에서Dev

두 목록 x와 y 사이의 모든 쌍 조합을 찾아 y의 모든 요소가 x에서 정확히 하나와 쌍을 이룹니다.

분류에서Dev

파이썬 목록에서 쌍을 이루는 각 요소의 조합을 통해 반복

분류에서Dev

주어진 요소의 모든 조합으로 배열을 얻는 가장 우아한 방법

분류에서Dev

목록에서 요소의 순서를 유지하는 조합을 만드는 방법이 있습니까?

분류에서Dev

편집기에서 큰 파이썬 목록의 모든 요소를 표시하거나 인쇄하는 방법

분류에서Dev

파이썬에서 자동으로 목록에서 요소의 시작 및 끝 색인을 찾는 방법

분류에서Dev

두 세트에서 목록의 모든 조합을 찾는 방법은 무엇입니까?

분류에서Dev

Bash에서 목록의 모든 쌍 조합을 반복하는 방법은 무엇입니까?

분류에서Dev

각 조합이 모든 항목을 포함하는 목록의 모든 순서 조합을 생성합니다.

분류에서Dev

데이터 프레임의 특정 열에있는 모든 행에서 .join을 사용하여 목록의 모든 요소를 결합하는 방법

분류에서Dev

파이썬에서 크기 n의 하위 목록에서 조합을 찾는 방법

분류에서Dev

파이썬에서 미리 정의 된 템플릿에서 가능한 조합 목록을 만드는 방법

분류에서Dev

파이썬에서 목록 조합을 만드는 방법

분류에서Dev

파이썬에서 모든 조합을 열거하고 인덱스를 반환하는 가장 빠른 방법

Related 관련 기사

  1. 1

    목록에서 두 요소의 모든 조합을 찾는 가장 효율적인 방법

  2. 2

    파이썬에서 결과 숫자와 동일한 목록의 모든 수학적 조합을 얻는 방법

  3. 3

    파이썬에서 주어진 조건을 기반으로 목록의 두 요소를 결합하는 방법

  4. 4

    R의 여러 목록에서 다중 요소 인덱스의 모든 조합을 "결합"하는 더 좋은 방법은 무엇입니까?

  5. 5

    배열 목록의 요소에서 모든 조합 검색

  6. 6

    반복되는 요소없이 목록의 모든 조합을 얻는 방법은 무엇입니까?

  7. 7

    서로 인접한 두 요소가 하나의 요소가 될 수있는 목록의 모든 조합을 얻는 방법

  8. 8

    파이썬에서 2 개의 큰 목록의 가능한 모든 조합을 효율적으로 분석하는 방법은 무엇입니까?

  9. 9

    파이썬에서 배열의 모든 조합의 곱을 얻는 방법은 무엇입니까?

  10. 10

    두 개 이상의 텐서 요소의 모든 조합을 생성하는 방법은 무엇입니까?

  11. 11

    파이썬에서 문자열 벡터 사이의 모든 조합을 찾는 방법

  12. 12

    파이썬에서 목록의 모든 조합 찾기

  13. 13

    파이썬에서 목록의 모든 조합 찾기

  14. 14

    파이썬에서 두 목록의 가능한 모든 값 조합을 사용하여 방정식을 풀기위한 일반화 된 방법을 모색

  15. 15

    파이썬의 다른 열 행에서 필요한 조합을 얻는 방법

  16. 16

    두 목록 x와 y 사이의 모든 쌍 조합을 찾아 y의 모든 요소가 x에서 정확히 하나와 쌍을 이룹니다.

  17. 17

    파이썬 목록에서 쌍을 이루는 각 요소의 조합을 통해 반복

  18. 18

    주어진 요소의 모든 조합으로 배열을 얻는 가장 우아한 방법

  19. 19

    목록에서 요소의 순서를 유지하는 조합을 만드는 방법이 있습니까?

  20. 20

    편집기에서 큰 파이썬 목록의 모든 요소를 표시하거나 인쇄하는 방법

  21. 21

    파이썬에서 자동으로 목록에서 요소의 시작 및 끝 색인을 찾는 방법

  22. 22

    두 세트에서 목록의 모든 조합을 찾는 방법은 무엇입니까?

  23. 23

    Bash에서 목록의 모든 쌍 조합을 반복하는 방법은 무엇입니까?

  24. 24

    각 조합이 모든 항목을 포함하는 목록의 모든 순서 조합을 생성합니다.

  25. 25

    데이터 프레임의 특정 열에있는 모든 행에서 .join을 사용하여 목록의 모든 요소를 결합하는 방법

  26. 26

    파이썬에서 크기 n의 하위 목록에서 조합을 찾는 방법

  27. 27

    파이썬에서 미리 정의 된 템플릿에서 가능한 조합 목록을 만드는 방법

  28. 28

    파이썬에서 목록 조합을 만드는 방법

  29. 29

    파이썬에서 모든 조합을 열거하고 인덱스를 반환하는 가장 빠른 방법

뜨겁다태그

보관