Language/Python

[Python] 리스트 컴프리헨션

nineil91 2022. 7. 22. 13:54

Qiskit으로 머신러닝 실습을 진행하던중 SVM(Support Vector Machine)의 커널부 코드도 뜯어보게 되었다.

https://qiskit.org/documentation/machine-learning/locale/ko_KR/_modules/qiskit_machine_learning/kernels/quantum_kernel.html

 

qiskit_machine_learning.kernels.quantum_kernel — Qiskit Machine Learning 0.4.0 문서

Shortcuts

qiskit.org

왠만한 파이썬 코드는 다 읽을 수 있을거라 생각했는데

리스트 컴프리헨션 부분을 전혀 이해 할 수 없었다. 코드를 이해하기 위해 리스트 컴프리헨션에 대해 정리하고 예제 문제를 풀어보고자 한다.

 

컴프리헨션이란?

파이썬에서 사용 가능한 함수이다. 자료형 안에 for문, if문을 한줄에 넣어 새로운 자료형을 만들 수 있다.

리스트, 집합(set), 딕셔너리 자료형에 사용할 수 있다.

 

리스트 컴프리헨션

리스트 안에 조건문을 사용하는 방법을 예시로 들어보겠다.

형식은 다음과 같다.

리스트 = [관게식 for문 if문]

- for문

>>> com = [i for i in range(5)]
>>> com
[0, 1, 2, 3, 4,]

- if 문

>>> com = [i for i in range(10) if i%2 == 0
>>> com
[0, 2, 4, 6, 8]

https://school.programmers.co.kr/learn/courses/30/lessons/12954

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

프로그래머스 문제를 풀다 알게 되었으므로 이 문제를 예시로 들겠다.

문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

입출력 예

answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]

내 경우 이 문제를 이렇게 풀었다.

def solution(x, n):
    answer = []
    for i in range (n):
        answer.append(x + i*x)
    return answer

다른 사람의 코드는 확연히 짧았다.

def number_generator(x, n):
    # 함수를 완성하세요
    return [i * x + x for i in range(n)]
print(number_generator(2, 5))

 


참고자료

리스트 컴프리헨션 예시 : Python | 리스트 컴프리헨션 list comprehension(https://velog.io/@suasue/Python-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%BB%B4%ED%94%84%EB%A6%AC%ED%97%A8%EC%85%98)

 

Python | 리스트 컴프리헨션 list comprehension

리스트 컴프리헨션이란? / 리스트 컴프리헨션 사용하기 / 리스트 컴프리헨션 장단점 / 리스트 컴프리헨션 활용하기(+딕셔너리 컴프리헨션)

velog.io

프로그래머스 스쿨 다른사람의 풀이 : https://school.programmers.co.kr/learn/courses/30/lessons/12954/solution_groups?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr