List Comprehension (List에 조건필터를 적용). 문자열을 가지고 노는 방법.
목록
1. List Comprehension (파이썬 고유의 아름다운 문법)
[실제 사례 연구]
mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 이라는 list를 만들어 주고
우리는 이 중 짝수만 출력하고 싶으면 아래와 같이 쓸 수 있다:
1
| mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
1 2 3
| for i in mylist: if i % 2 == 0: print(i)
|
2
4
6
8
10
그럼 mylist에서 짝수만 뽑아서 list로 만들어 주고 싶다면:
1 2 3 4 5 6 7 8
| mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even = []
for i in mylist: if i % 2 == 0: even.append(i)
print(even)
|
[2, 4, 6, 8, 10]
이렇게 for in 문으로 해줄 수 있다.
하지만, 우리는 list comprehension을 통해 더욱 쉽게 해결 할 수 있다!!
1-1. list comprehension 조건필터
1
| mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
아래 문법이 바로 list comprehension 이다. 한 줄로 해결해 버리는 것이 매력임!
1
| even = [i for i in mylist if i % 2 == 0]
|
[2, 4, 6, 8, 10]
1-2. [STEP 1] list를 만들어야 하니 일단 꺾쇠[ ]를 씌운다
- 꺾쇠 안에 반복문이 들어간다
- 반복문을 돌면서 return 된 i값을 list에 넣는 원리이기 때문에 for구분 앞에 i를 써준다
1
| even = [i for i in mylist]
|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1-3. [STEP 2] 조건 필터를 걸어 준다
[i for i in mylist (이곳에 조건문)]
1
| [i for i in mylist if i % 2 == 0]
|
[2, 4, 6, 8, 10]
이것을 변수에 다시 할당해주면 끝!
1
| even = [i for i in mylist if i % 2 == 0]
|
[2, 4, 6, 8, 10]
1-4. [응용 STEP] 변수 값을 가공할 수도 있다
예를 들어:
mylist의 모든 값에 +2를 하고 다시 even이라는 list에 저장하고 싶다면
1
| mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
1
| even = [i+2 for i in mylist]
|
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
2. 문자열(string)을 가지고 놀기
2-1. 문자의 길이
6
10
2
6
2-2. 문장 쪼개기 – “.split”
- split은 문장을 특정 규칙에 의해 쪼개 주는 기능을 한다
- 명령어: 변수명.split(‘쪼개는 기준’)
- 쪼개는 기준이 설정되어 있지 않으면 그냥 '빈칸’으로 인식된다
['This', 'is', 'a', 'pen']
['This', 'is', 'a', 'pen']
['This', 'is', 'a', 'pen']
['This', 'is', 'a', 'pen']
'This'
'a'
'Thisa'
['한글은', '어떻게', '될까요?']
2-3. 대문자 / 소문자로 만들기 – “.upper” / “.lower”
'MY NAME IS HYEMIN'
'my name is hyemin'
'한글엔 대소문자가 없어요ㅠ'
'한글엔 대소문자가 없어요ㅠ'
2.4. ~로 시작하는, ~로 끝나는 – “.startswith” , “.endswith”
1 2 3
| a = '01-sample.png' b = '02-sample.jpg' c = '03-sample.pdf'
|
True
False
True
조건(혹은 형식)에 맞는 파일을 추출하고 싶을 때:
1 2 3
| for file in mylist: if file.endswith('jpg'): print(file)
|
02-sample.jpg
2-5. 바꾸기 – “.replace(‘바꿀 대상, 바꿔야할 값’)”
[예] file형식을 바꾸고 싶다면:
1
| a.replace('.png', '.jpg')
|
'01-sample.jpg'
이 때 a의 값이 변하지 않아. 다시 할당 해야 함
'01-sample.png'
1
| a_new = a.replace('.png', '.jpg')
|
'01-sample.jpg'
1
| a = a.replace('.png', '.jpg')
|
'01-sample.jpg'
2-6. 불필요한 공백 제거하기 – “.strip”
[예]
1 2
| a = ' 01-sample.png' b = '01-sample.png'
|
False
strip은 양 끝 불필요한 공백을 제거해 줌.
'01-sample.png'
True