일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- git
- 카톡
- react
- Class
- S3
- MongoDB
- 채팅
- async
- Props
- TypeScript
- NeXT
- wetube
- Vue
- EC2
- lambda
- socket io
- pandas
- RDS
- SSA
- 튜플
- flask
- dict
- 파이썬
- node
- 중급파이썬
- docker
- SAA
- merge
- crud
- AWS
- Today
- Total
초보 개발자
4강 리스트 컴프리헨션 본문
r1 = [1,2,3,4,5]
r2 = []
for i in r1:
r2.append(i*2)
r2
[2,4,6,8,10]
리스트의 생성과 그 리스트의 채울 데이터를 가공 추출하는 일련의 과정들을 하나로 묶기 위해 존재하는 것이 리스트 컴프리헨션이다.
위의 과정들을 대폭 줄일 수 있다.
r2 = [x * 2 for x in r1]
먼저 []를 열어서 리스트라는 것을 알려주고
x는 for이 루프들 돌면서 받는 요소이다
그 요소에 *2를 하여 반환하라는 의미이다 따라서 r1에 있는 요소들을 돌면서 새로운 리스트를 하나 만들것이다.
이번에 조건필터를 추가해보려고 한다.
r1 = [1,2,3,4,5]
r2 = []
for i in r1:
if i % 2:
r2.append(i*2)
r2
[2,6,10]
좀 전에 해봤던 것에 if문을 추가하였다. 이건 나머지가 0이 아니면 *2를 하라고 하여
홀수들*2인 리스트들이 출력이 된다 이 역시 리스트 컴프리헨션으로 가능하다
r2 = [x * 2 for x in r1 if x % 2]
너무 간단하지 않은가
r1의 값들을 하나씩 x에 넣어서,
x % 2가 True인지 확인하고,
True이면 x * 2를 리스트에 추가 한다.
for가 두번 들어간 리스트 컴프리헨션도 있다. 이 역시 간단하다.
r1 = ['Black', 'White']
r2 = ['Red', 'Blue', 'Green']
re = [t+p for t in r1 for p in r2 ] # 중첩돈 for 루프 형태의 리스트 컴프리헨션
r3
['BlackRed', 'BlackBlue', 'BlackGreen', 'WhiteRed', 'WhiteBlue', 'WhiteGreen']
각 요소 t와 p를 더하라는 것인데 먼저 for t in r1안에 for p in r2가 들어간다고 생각하자
따라서 t는 고정이고 for p루프가 다 돈뒤 그다음 t의 요소로 넘어가고 다시 for p 루프가 다 돈다.
즉 black(고정) red blue green(다 돌았음) white(고정) red blue green(다 돌았음) 끝
r = [n * m for n in range(2,10) for m in range(1,10)]
r
[2,4,6,8,10,12,14,16,18,3,6,9,12,15,18 ..... ]
이렇게 또 만들 수 있고
이중 for 루프에 조건 필터까지 추가할 수있다.
r = [n * m for n in range(2,10) for m in range(1,10) if n * m % 2]
r
[3,9,15,21,27,5,15,25,35... ]
모든 n과 m을 조합해서 n* m의 결과가 2의 배수인 n과 m의 조합만을 가지고 n*m의 결과를 만들어서 리스트에 저장!
if 문을 마지막에 생각하자 이중 for문 먼저 돌고 그 결과값을 리스트에 넣기 전에 if에 확인하는 식으로 !!
처음에 이중 for안에 들어있는 for문에서 if를 검사하는 줄 알았는데 아니었다.
'Python > 윤성우 열혈 파이썬' 카테고리의 다른 글
6강 객체처럼 다뤄지는 함수 그리고 람다 (0) | 2021.12.16 |
---|---|
5강 lterable 객체와 lterator 객체 (0) | 2021.12.16 |
3강 깊은 복사와 얕은 복사 (0) | 2021.12.15 |
2강 수정 가능한 객체와 수정 불가능한 객체 (0) | 2021.12.15 |
1강 레퍼런스 카운터, 가비지 컬렉션 (0) | 2021.12.15 |