python : 리스트 컴프리헨션 / for 루프와 range 함수를 사용하여 리스트를 생성하는 방법

리로린·2023년 5월 11일

python 문법

목록 보기
3/7

range란?

range 함수는 연속된 정수를 생성하는 함수이다. range는 일반적으로 range(변수값)을 사용해 어디까지 연속된 정수를 생성할 지 정의한다.
range는 시작 또한 정의가 가능하다.

 range(start, stop[,step])
 
 # range(시작값, 종료되는 값(포함되지 않음) [,증가되는 값]) 형식으로 사용한다.
  1. append를 사용한 리스트 생성

이러한 range를 이용해 리스트를 생성하는 리스트 컴프리헨션에 대해 알아보자
먼저 append를 사용해 리스트를 생성하는 방법에 대해 이해해야한다.

my_list = []
for i in range(10):
    my_list.append(i)
print(my_list)

위와 같이 출력되는 값을 리스트에 넣었을때 0부터 9까지의 숫자를 확인 할 수 있다.

my_list = []
for i in range(3,10):
    my_list.append(i)
print(my_list)

my_list_2 = []
for i in range(3,10,2):
    my_list_2.append(i)
print(my_list_2)

start을 시작으로 step이 stop범위까지 해당되는 값만 출력된다.

  1. 리스트 컴프리헨션

리스트 컴프리헨션은 for 루프와 if 조건문을 사용하여 리스트를 생성하는 간결한 방법이다. for 루프와 if 조건문을 []로 감싸주면 리스트 컴프리헨션이 된다.

리스트 컴프리헨션은 특이한 것이 for in range앞에 n값이 꼭 추가가 되어야한다.

[실행문(n) + for i in (rang or list) + 조건문]

*n값은 무엇일까?

n=3
my_list = []
for i in range(3,10):
    my_list.append(n)
    print(my_list)

print([3 for i in range(3,10)])


위와 같이 3이라는 값이 7개 추가 되었음을 확인 할 수 있다. 즉 for i in range 앞의 n은 append 되는 값을 의미한다. 또한 리스트 컴프리헨션을 통해 코드를 한줄로 간결하게 나타내었음을 확인 할 수 있다.

2-2 리스트 컴프리헨션의 조건문

print([3 for i in range(3,10) if i%2==0])

for in range의 뒷부분에 작성하는 것으로 3과 10 구간에서 짝수는 4,6,8 (10은 stop임으로 해당이 안됨) 이 있음으로 3이 3번 append 되었다.

2-3 리스트 컴프리헨션의 중첩 (중복)

주로 리스트 컴프리헨션의 중첩 같은 경우 2차원 리스트 생성시 많이 사용된다.
조건문은 사용가능하다.n값의 위치에 중첩되는 [for in range] 중첩문을 넣어주면 된다. 만약 n값을 추가하여 넣는경우 문법 오류가 표시가 된다. 이미 중첩문으로 append되어지는데 n을 추가할 경우 append되는 값이 2개가 되어 오류가 나는 것이다.


print([[i for j in range(3)]  for i in range(3,10) if i%2==0])

여기서 추가되는 n(append 되어지는 값)은 i for j in range (3)이다. 첫 for 문에서 3부터 10까지의 짝수는 4로 시작된다. append 되어지는 i for j in range에서 i는 4임으로 4가 3번, 다음 for문에서는 6이 3번, 다음에는 8이 3번 추가되어 위와 같은 결과가 나온다.

profile
리로린의 블로그

0개의 댓글