파이써닉하게 2차원 리스트를 1차원 리스트로 변환하기

김태인·2022년 10월 20일
0

알고리즘

목록 보기
8/9
  1. sum()으로 2차원 리스트를 1차원으로 변환
  • sum(iterable, start)은 start에 iterable의 모든 데이터를 더하는 함수다
  • sum(num_list1, []) = [] + [1, 11] + [2, 22] + [3, 33]
num_list1 = [[1, 11], [2, 22], [3, 33]]
print(sum(list1,[]))

Output:

[1, 11, 2, 22, 3, 33]
  1. itertools로 2차원 리스트를 1차원으로 변환
  • itertools.chain()은 인자로 전달되는 iterable의 데이터를 연결하여 리턴한다
  • 중요한건 인자 앞에 *을 붙여서 unpacking을 반드시 해주어야함
import itertools

num_list1 = [[1, 11], [2, 22], [3, 33]]
print(list(itertools.chain(*num_list1)))

Output:

[1, 11, 2, 22, 3, 33]

itertools.chain.from_iterable() 를 사용하면 *를 입력하지 않고 인자를 전달 할 수 있음

import itertools
num_list1 = [[1, 11], [2, 22], [3, 33]]
print(list(itertools.chain.from_iterable(num_list1)))

Output:

[1, 11, 2, 22, 3, 33]
  1. numpy를 사용하여 2차원 리스트를 1차원으로 변환
    numpy 라이브러리를 사용하여 진행할 수 있음
    concatenate()는 2차원 리스트의 데이터를 연결하여 1차원으로 변경해줌
import numpy

num_list1 = [[1, 11], [2, 22], [3, 33]]
print(numpy.concatenate(num_list1).tolist()

Output:

[1, 11, 2, 22, 3, 33]

numpy array flatten()을 사용해서도 가능

import numpy

num_list1 = [[1, 11], [2, 22], [3, 33]]
print(numpy.array(num_list1).flatter().tolist()

Output:

[1, 11, 2, 22, 3, 33]
  1. List comprehension 으로도 가능
num_list1 = [[1, 11], [2, 22], [3, 33]]
print([num for number_list in num_list1 for num in number_list])
profile
코딩이 취미가 되는 그날까지

0개의 댓글