2022. 12. 28. 23:54ㆍTrip to Python
오늘 진도를 나가던 중에 까먹은 내용이 있는데 바로 리스트 컴프리헨션이다. 컴프리헨션은 반복문을 보다 간략하게 쓸 수 있어서 매우 용이하다. 나도 처음 배울 때는 매우 직관적이고 이해가 되었는데 막상 조금 어려운 for 반복문을 변환하려니까 숨이 턱 막혔다. 아직 이해가 완전하지 못한 탓이다.
예시를 통해서 다시 한 번 이해를 해보자
1.List Comprehension(숫자형)
1) For Loop
numbers = [1, 2, 3]
new_list = []
for n in numbers:
add_1 = n + 1
new_list.append(add_1)
위와 같은 For Loop 문을 컴프리헨션 문으로 변환해보자
2) List Comprehension
numbers = [1, 2, 3]
new_list = [n+1 for n in numbers]
4줄을 1줄로 바꾸는 기적을 행하셨다.
2. List Comprehension(문자형)
name = "kestrel"
name_list = [letter for letter in name]
문자열을 통과 시킬 경우 아래와 같이 한 글자씩 내보내서 리스트로 구성된다.
['k','e','s','t','r','e','l']
3. Dictionary Comprehension
names = ['Alex', 'Beth', 'Caroline', 'Dave', 'Eleanor', 'Freddie']
import random
student_scores = {name:score.radiant(1,100) for name in names}
리스트를 통해서 새로운 딕셔너리를 만들어줄 수도 있고 기존의 딕셔너리를 새로운 딕셔너리로 만들 수도 있다. 이 때는 item() 메소드를 활용해서 각 키와 값 쌍으로 접근하여 변경해준다.
4. 판다스 데이터 프레임에서 반복하는 방법
import pandas
student_dict = {
"student": ["Angela", "James", "Lily"]
"score": [56, 76, 98]
}
student_data_frame = pandas.DataFrame(student_dict)
저 딕셔너리를 보면 우리를 묘하게 불편하게 만든다. 이유는 이름에 해당하는 스코어를 연결짓고 싶어하는 우리의 묘한 욕망이 있기 때문이다.
for (index, row) in student_data_frame.iterrows():
print(row)
이렇게 하면 각 행마다 값을 볼 수 있다.
5. 간단한 활용
letter,code
A,Alfa
B,Bravo
.
.
.
우리에게 이런 csv 파일이 있고
#TODO 1. Create a dictionary in this format:
{"A": "Alfa", "B": "Bravo"}
이걸 바란다면 어떻게 해야할까?
import pandas
dict_from_csv = pandas.read_csv('nato_phonetic_alphabet.csv')
new_dict = {row.letter:row.code for (index, row) in dict_from_csv.iterrows()}
pandas 모듈을 통해서 가능하다. 먼저 pandas.read_csv를 통해서 파일을 열면 아까 데이터 프레임 형식으로 나온다. 여기서 각 열에 접근하게 해주는 iterrows() 함수를 사용하여 접근하고 각 인덱스와 로우가 나오고 그 값에 대해서 로우의 레터값과 로우의 코드 값을 뽑아내어 새로운 딕셔너리를 재구성하면 된다.
6. 간단한 활용 2
그럼 우리가 입력한 값에 대해서 코드 값을 산출하려면 어떻게 할까?
name = input("What is your name?")
letter_list = [letter for letter in name]
이렇게 하면 각 철자로 이루어진 리스트를 만들어 줄 수 있다. 다음으로는 철자들에 대응하는 코드값을 불러오면된다.
code_list = [new_dict[letter] for letter in letter_list]
레터 리스트에서 하나씩 꺼내고 그것을 키로 갖는 딕셔너리의 값을 불러내어 리스트로 구성하면된다.
'Trip to Python' 카테고리의 다른 글
오늘의 파이썬 궁금증 str이 어떻게 나뉜걸까..? (0) | 2022.12.22 |
---|---|
파이썬 Turtle Crossing 게임 만들기 (1) | 2022.12.21 |
파이썬 Pong game 만들기 (0) | 2022.12.20 |
(파이썬 OOP 이해도 높이기) 거북이 레이스 만들기 - 파이썬 좌표 개념 (0) | 2022.12.12 |
(파이썬 OOP 이해도 높이기 )퀴즈 프로그램 만들기 (0) | 2022.12.08 |