여기서 다뤄 볼 것들
- List Comprehension
- Container
- Generator
- List vs Array
- Mutable vs Immutable
- Sort vs Sorted
상기 나열된 리스트의 것들을 다뤄보도록 할게요.
잠깐 짚고 가자면 tuple은 immutable(변경X) list는 mutable(변경 o)한거 상기 시켜주세요.즉 값을 바꿀수 있는 유형인지 아닌지 비교해 볼 수 있겠네요.
지능형 리스트에 대한 실습을 해볼게요.
특수기호 문자열을 unicode로 변환하여 리스트에 담아 볼게요.
방법1
# unicode로 변환하는 리스트를 만들어 볼게요.
chars = '!@#$%^&*()_+'
code1 = []
for s in chars:
code1.append(ord(s))
print('ex1-1 -', code1)
정수로 변환되어 리스트에 저장된 모습을 확인 할 수 있어요.
output
ex1-1 - [33, 64, 35, 36, 37, 94, 38, 42, 40, 41, 95, 43]
장점: 1줄, 대용량 데이터를 다룰때 속도 짱좋음
단점: 상대적으로 가독성 떨어짐
방법2
print([ord(s) for s in '!@#$%^&*()_+'])
방법3
chars2 = '!@#$%^&*()_+'
code2 = [ord(s) for s in chars2]
print(code2)
codes3 = [ord(s) for s in chars if ord(s) > 40]
print(codes3)
# 결과: [64, 94, 42, 41, 95, 43]
codes4 = list(map(ord, chars))
print(codes4)
# 결과: [33, 64, 35, 36, 37, 94, 38, 42, 40, 41, 95, 43]
codes5 = list(filter(lambda x : x > 40, map(ord, chars)))
print(codes5)
# 결과: [64, 94, 42, 41, 95, 43]
filter 메소드의 첫번째 인자는 람다로 정의하고 두번째는 map()정의하는데요. 1줄로 엄청나게 콤팩트하게 짤 수 있다는걸 알수 있어요.
print([chr(s) for s in code1])
# 결과: ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+']