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

Python - 1D 목록을 가변 길이의 2D 목록으로 변환

<시간/>

파이썬의 목록은 일반적으로 요소가 차례로 나열되는 1D 목록입니다. 그러나 2D 목록에서는 외부 목록 내부에 중첩된 목록이 있습니다. 이 기사에서는 주어진 1D 목록에서 2D 목록을 만드는 방법을 볼 것입니다. 또한 2D 목록 내의 요소 수에 대한 값을 프로그램에 제공합니다.

추가 및 색인 사용

이 접근 방식에서 우리는 2D 목록의 각 요소를 반복하는 for 루프를 만들고 생성할 새 목록의 인덱스로 사용합니다. 인덱스 값은 0에서 시작하여 2D 목록에서 받은 요소에 추가하여 계속 증가시킵니다.

예시

# Given list
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

# Length of 2D lists needed
len_2d = [ 2, 4]

#Declare empty new list
res = []
def convert(listA, len_2d):
   idx = 0
   for var_len in len_2d:
      res.append(listA[idx: idx + var_len])
      idx += var_len
convert(listA, len_2d)
print("The new 2D lis is: \n",res)

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

출력

The new 2D lis is:
[[1, 2], [3, 4, 5, 6]]

islice 사용

islice 함수는 2D 목록에서 요구하는 특정 수의 요소로 주어진 목록을 슬라이스하는 데 사용할 수 있습니다. 그래서 이번 주에는 2D 목록의 각 요소를 살펴보고 그 값을 사용하여 원래 목록의 슬라이스 2를 사용합니다. islice 함수를 사용하려면 itertools 패키지가 필요합니다.

예시

from itertools import islice
# Given list
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

# Length of 2D lists needed
len_2d = [ 3, 2]

# Use islice
def convert(listA, len_2d):
   res = iter(listA)
   return [list(islice(res,i)) for i in len_2d]
res = [convert(listA, len_2d)]
print("The new 2D lis is: \n",res)

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

출력

The new 2D lis is:
[[['Sun', 'Mon', 'Tue'], ['Wed', 'Thu']]]