1. 리스트 생성 방법
- 리스트를 생성하는 방법
1 | r1 = [1, 2, 3] | 리스트를 생성하는 가장 일반적인 방법 |
2 | r2 = [ ] | 빈 리스트를 생성하는 방법 |
3 | r3 = [1, 2, [3, 4]] | 리스트가 포함된 리스트를 생성하는 방법 |
- 리스트 함수를 호출해서 리스트를 생성하는 방법
1 | r4 = list("Hello") | 문자열을 전달해서 리스트를 생성 |
2 | r5 = list((5, 6, 7)) | 튜플을 전달해서 리스트를 생성 |
3 | r6 = list(range(0,5)) | 레인지를 전달해서 리스트를 생성 |
- 그러나 조건이 복잡한 리스트를 만들 경우,
ex) [1, 2, 3, 4, 5]의 모든 값을 두 배씩 증가시킨 값을 지니는 리스트를 만들어라.
- 위와 같이 for 루프를 이용하면 됨
- r2와 같이 일단 빈 리스트를 생성한 뒤에, 2씩 증가하여 리스트 r2에 저장하게끔 함
- for 루프를 사용하지 않는 방법도 있는데, 그것이 ‘리스트 컴프리헨션(Comprehension)’이라고 함
- x *2 : 이 리스트의 값은 x * 2의 결과들로 이루어짐
- for x in r1 : x는 r1에 있는 값들임
- 즉, r2 = [x * 2 for x in r1] : r1의 값들을 하나씩 x에 넣어서, x * 2의 결과를 만들어 리스트에 저장하겠음
- [1, 2, 3, 4, 5]의 모든 값을 10씩 증가시킨 값을 지니는 리스트를 만들어라.
2. 조건 필터 추가 하기
- i가 홀수인 경우에만 2를 곱하는 문장을 실행하는 조건이 달린 for 루프
- 이를 리스트 컴프리헨션을 이용하여 작성하면,
- for x in r1 : r1의 값들을 하나씩 x에 넣어서
- if x % 2 : x % 2가 True인지 확인하고,
- x * 2 : True이면 x * 2를 리스트에 추가하기
- cf) 리스트 컴프리헨션은 일종의 규칙이므로 이해보다는 적용에 무게를 둬야함
3. 리스트 컴프리헨션에 for 한번 더 들어가는 경우
- 옷의 상의와 하의의 색상 정보를 갖는 리스트를 만들고, 모든 조합의 색을 값으로 담는 리스트를 만들 경우 (확률과 통계 느낌)
r1 = [‘Black’, ‘White’’] |
r2 = [‘Rec’, ‘Blue’, ‘Green’] |
- for 루프를 기반으로 하면,
- 이를 리스트 컴프리헨션으로 바꾸면,
- for t in r1 for p in r2 : 모든 t와 p의 조합을 생성
- t + p : t + p의 결과를 만들어서 리스트에 저장
- 다음과 같은 리스트도 리스트 컴프리헨션을 이용하여 간단히 불러낼 수 있음
- for n in range(2, 10) for m in range(1, 10) : 모든 n과 m의 조합을 생성해서
- n * m : n * m의 결과를 만들어서 리스트에 저장해라
4. 이중 for 루프에 조건 필터 추가
- 이중 for 루프 기반의 리스트 컴프리헨션도 if 절을 추가할 수 있음
- 구구단의 결과를 담는 리스트에서 그 결과가 짝수인 값들만 리스트에 포함시키기
- for n in range(2, 10) for m in range(1, 10) : 모든 n과 m의 조합을 생성해서
- if (n * m) % 2 : n * m의 결과가 2의 배수인 n과 m의 조합만을 가지고
- n * m : n * m의 결과를 만들어서 리스트에 저장한다.
'윤성우의 열혈 파이썬 (중급)' 카테고리의 다른 글
Story 09. 제너레이터 함수 (0) | 2021.07.15 |
---|---|
Story 08. 두 함수를 대신하는 리스트 컴프리헨션 (0) | 2021.07.14 |
Story 07. map & filter (0) | 2021.07.12 |
Story02. 수정 가능한 객체와 불가능한 객체 (0) | 2021.07.05 |
Story 01. 레퍼런스 카운트와 가비지 컬렉션 (0) | 2021.07.05 |