Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python - 열을 목록 목록의 개별 요소로 변환

<시간/>

파이썬을 사용하여 데이터를 분석하거나 데이터를 처리할 때, 우리는 다른 열을 가진 목록을 얻기 위해 주어진 목록을 리모델링하거나 재구성해야 하는 상황을 접하게 됩니다. 우리는 아래에서 설명하는 여러 접근 방식으로 이를 달성할 수 있습니다.

슬라이싱 사용

특정 요소에서 목록을 조각화하여 기둥 구조를 만들 수 있습니다. 여기에서 주어진 목록을 요소가 중간에서 분할되는 새 목록으로 변환합니다. 우리는 두 개의 for 루프를 고소합니다. 바깥쪽은 0번째 요소에서 두 번째 요소로 요소를 분할하고 안쪽 요소는 두 번째 요소에서 마지막 요소로 분할합니다.

예시

x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
result = [m for y in [[n[2: ], [n[0:2]]] for n in x] for m in y]
print ("Converting column to separate elements in list of lists : \n" + str(result))

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

itertools.chain() 및 목록 이해

두 개의 for 루프 대신 itertools의 chain 메서드를 사용할 수도 있습니다. 목록 이해를 사용하여 위와 동일한 논리를 적용하고 주어진 목록의 중간에 열이 분할된 결과를 얻습니다.

예시

from itertools import chain
x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
res = list(chain(*[list((n[2: ], [n[0:2]]))
   for n in x]))
print ("Converting column to separate elements in list of lists : \n" + str(res))

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]