[PYTHON] 파이썬 : "튜플 목록"을 1 개의 평면 목록 또는 1 개의 매트릭스로 변환합니다.
PYTHON파이썬 : "튜플 목록"을 1 개의 평면 목록 또는 1 개의 매트릭스로 변환합니다.
Sqlite를 사용하면 "select..from"명령이 "output"결과를 반환합니다.이 결과는 (Python으로) 인쇄됩니다.
>>print output
[(12.2817, 12.2817), (0, 0), (8.52, 8.52)]
그것은 튜플리스트 인 것 같습니다. 나는 하나의 간단한 1D 배열 (= 파이썬에서의리스트)에서 "출력"을 변환하고 싶습니다.
[12.2817, 12.2817, 0, 0, 8.52, 8.52]
또는 2x3 매트릭스 :
12.2817 12.2817
0 0
8.52 8.52
"output [i] [j]"를 통해 읽을 수 있습니다.
flatten 명령은 첫 번째 옵션에 대한 작업을 수행하지 않으며 두 번째 옵션에 대해서는 전혀 모르고 있습니다. :)
나에게 힌트를 주시겠습니까? 실제 데이터가 훨씬 커지면 빠를 수 있습니다 (여기에는 단순한 예가 있습니다).
고맙습니다.
해결법
-
==============================
1.지금까지 가장 빠른 (그리고 가장 짧은) 해결책이 게시되었습니다 :
지금까지 가장 빠른 (그리고 가장 짧은) 해결책이 게시되었습니다 :
list(sum(output, ()))
itertools 솔루션보다 약 50 % 빠르며 맵 솔루션보다 약 70 % 빠릅니다.
-
==============================
2.Python 3에서는 * 구문을 사용하여 반복 가능한 목록을 평평하게 만들 수 있습니다.
Python 3에서는 * 구문을 사용하여 반복 가능한 목록을 평평하게 만들 수 있습니다.
>>> t = [ (1,2), (3,4), (5,6) ] >>> t [(1, 2), (3, 4), (5, 6)] >>> import itertools >>> list(itertools.chain(*t)) [1, 2, 3, 4, 5, 6] >>>
-
==============================
3.itertools 체인을 사용하십시오 :
itertools 체인을 사용하십시오 :
>>> import itertools >>> list(itertools.chain.from_iterable([(12.2817, 12.2817), (0, 0), (8.52, 8.52)])) [12.2817, 12.2817, 0, 0, 8.52, 8.52]
-
==============================
4.또는 다음과 같이 목록을 병합 할 수 있습니다.
또는 다음과 같이 목록을 병합 할 수 있습니다.
reduce(lambda x,y:x+y, map(list, output))
-
==============================
5.큰 배열의 합계 옵션보다 빠른 다른 옵션 :
큰 배열의 합계 옵션보다 빠른 다른 옵션 :
지도 / 확장으로 평면화 :
l = [] list(map(l.extend, output))
지도 대신 목록 이해력으로 병합 (가장 빠름)
l = [] list(l.extend(row) for row in output)
-
==============================
6.
>>> flat_list = [] >>> nested_list = [(1, 2, 4), (0, 9)] >>> for a_tuple in nested_list: ... flat_list.extend(list(a_tuple)) ... >>> flat_list [1, 2, 4, 0, 9] >>>
위에 표시된 것처럼 튜플 목록에서 단일 목록으로 쉽게 이동할 수 있습니다.
-
==============================
7.반복 가능한 유형으로 작동하는 목록 이해 방법은 여기에 나와있는 다른 방법보다 빠릅니다.
반복 가능한 유형으로 작동하는 목록 이해 방법은 여기에 나와있는 다른 방법보다 빠릅니다.
flattened = [item for sublist in l for item in sublist]
l은 평평하게하는 목록입니다 (OP의 경우 출력이라고 함)
l = list(zip(range(99), range(99))) # list of tuples to flatten
[item for sublist in l for item in sublist]
시간 측정 결과 = 루프 당 7.67 μs ± 129 ns
flattened = [] list(flattened.extend(item) for item in l)
시간 결과 = 루프 당 11 μs ± 433 ns
list(sum(l, ()))
시간 결과 = 루프 당 24.2 μs ± 269 ns
-
==============================
8.임의의 중첩 목록의 경우 (경우를 대비하여) :
임의의 중첩 목록의 경우 (경우를 대비하여) :
def flatten(lst): result = [] for element in lst: if hasattr(element, '__iter__'): result.extend(flatten(element)) else: result.append(element) return result >>> flatten(output) [12.2817, 12.2817, 0, 0, 8.52, 8.52]
-
==============================
9.데이터 구조와 속도면에서 numpy가 만들어진 것입니다.
데이터 구조와 속도면에서 numpy가 만들어진 것입니다.
import numpy as np output = [(12.2817, 12.2817), (0, 0), (8.52, 8.52)] output_ary = np.array(output) # this is your matrix output_vec = output_ary.ravel() # this is your 1d-array
from https://stackoverflow.com/questions/10632839/python-transform-list-of-tuples-in-to-1-flat-list-or-1-matrix by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] ImproperlyConfigured : 설정에 액세스하기 전에 환경 변수 DJANGO_SETTINGS_MODULE을 정의하거나 settings.configure ()를 호출해야합니다. (0) | 2018.10.19 |
---|---|
[PYTHON] 파이썬 클래스에서 메소드를 정렬하는 좋은 방법은 무엇입니까? (0) | 2018.10.19 |
[PYTHON] 지역 ()을 사용하는 파이썬 사전 이해력은 KeyError를 제공합니다. (0) | 2018.10.19 |
[PYTHON] 파이썬 - 두 문자열 간의 차이점 (0) | 2018.10.19 |
[PYTHON] Python ElementTree를 문자열로 변환 (0) | 2018.10.19 |