일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- Jupyterlab
- conda
- sLLM
- 파이썬
- 티스토리챌린지
- streamlit
- team_project
- chromeextention
- pandas
- ai캠프
- ai 캠프
- Github
- ollama
- seaborn
- aws
- 머신러닝
- mifare
- 오블완
- lightsail
- ML
- 정치기 필기
- EC2
- ai_캠프
- mysql
- django
- djangorestframework
- pytorch
- 로컬 런타임
- finpilot
- Today
- Total
greatsangho의 이야기
캠프 3일차 - 파이썬 리스트, 함수 본문
반복문은 for과 while이 있으며 상황에 맞게 사용해야 함
range() 함수의 경우
range(<시작>, <끝(포함 x)>, <간격>)의 형식으로 이루어짐
reverse(), reversed() 함수
temp = list(range(10)) # 0 ~ 9 시퀀스하게 범위를 나타내는 range를 list화 저장
print(temp)
print(temp.reverse()) # 리스트 "변수 자체에 저장된 값을 reverse 그리고 출력은 없음, 원본에 영향을 줌
print(temp)
print(reversed(temp)) # 리스트 변수의 데이터를 reversed한 결과를 리턴, 원본은 영향이 없다
print(list(reversed(temp)))
print(temp)
이와 같이 temp.reverse()는 값 자체를 변경하고 return이 없어 print 하면 None이 나오지만
reversed(temp)는 원래 값을 건드리지 않고 리스트를 거꾸로 반환한다
.함수() 형태의 내장함수는 주로 그 자체를 변경하는 경우가 많고
함수()처럼 안에 넣는 외부함수를 이용하면 주로 결과만 보여주는 경우가 많다.
따라서
for i in reversed(list_1):
형태는 사용 가능하지만.reverse()는 for 문에 들어갈 수 없음에 주의해야 한다.
reversed() 함수 사용 시 주의할 점
temp = reversed([1,2,3,4,5])
for i in temp:
print(i)
print('-'*50)
for i in temp:
print(i)
# 인덱스 위치가 바뀐 상태로 있음, C언어 오프셋 위치 변경 명령어 존재
# 한번 순환 후 이미 메모리 위치가 끝에 가있고 리셋되지 않음
이 코드에서 reversed() 함수는 주소를 가리키는데 첫 번째 for문 이후 마지막 주소로 넘어가 있으므로 두 번째 반복문은 출력되지 않는다.
C 언어에서는 오프셋 위치를 초기화하는 명령어가 존재하지만 파이썬은 직접 메모리를 건들지 않기 때문에 사용에 주의가 필요하다
while은 조건을 만족할 때까지 실행, 다중조건도 사용 가능하다
메뉴를 입력받아 전체 가격을 출력하는 프로그램을 만들어보면
1. 먼저, 리스트를 선언한 뒤
2. while문을 True로 만들고,
3. 음식 번호를 입력받은 뒤 이를 리스트에 저장한다
4. 다른 번호가 나오면 조건문에서 나와 리스트를 딕셔너리에 저장한다
5. 번호를 키값으로 하여 저장한 딕셔너리와 음식 가격을 저장한 리스트를 만들고
6. key, value를 호출하며 동시에 리스트를 불러오며 계산하여 전체 가격을 구한다
sleep()
import time
for i in range(10):
time.sleep(1) # 1초간 멈춤
print(i)
코드 실행 간 원하는 초만큼 잠시 멈추며 실행할 수 있다
리스트를 딕셔너리로 변환할 때
for i in range(len(key_list)):
character[key_list[i]] = value_list[i]
처럼 반복문을 통해 딕셔너리에 저장할 수 있지만
zip 함수를 이용해
dict(zip(key_list, value_list)) # 두 집합을 끼리끼리 묶음
이와 같이 key와 value를 딕셔너리로 만들 수 있다.
enumerate는 인덱스가 몇 번째인지 횟수를 알아야 할 때 사용
enumerate는 (인덱스, 요소)의 형태로 반환한다.
딕셔너리의 .items()로 key와 value를 받을 수 있듯이
리스트는 enumerate(list)와 반복문으로 인덱스와 요소를 받을 수 있다.
print('반복문과 조합하기')
for i, value in enumerate(example_list):
print(f'{i}, {value}')
exaple_dictionary = {
'키A': '값A',
'키B': '값B',
'키C': '값C'
}
for key, element in exaple_dictionary.items():
print(f'{key}, {element}')
min(), max(), sum()은 최소, 최대, 합 --> 변수 이름으로 지정하지 않도록 주의한다
리스트 내포(List comprehension)
: 리스트 내포는 반복문과 조건문을 한 줄로 합쳐 리스트로 변환하는 방식으로 형식은 크게 3가지가 있다.
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것] # 기본 모양
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 if 조건문] # 기본 모양 + 조건문
리스트 이름 = [표현식1 if 조건문 else 표현식2 for 반복자 in 반복할 수 있는 것] # 기본 모양 + 조건문(if ~ else)
if 조건문으로 짝수만 출력하기
type() 받아서 원하는 타입만 출력
삼항연산자
파이썬에는 삼항연산자가 없다
하지만 이와 비슷하게 if와 else로 구현할 수 있다
result = '짝수' if 2 % 2 == 0 else '홀수'
print(result)
result 값에 따라 홀/짝을 구분하여 출력 가능하다
이와 같이 리스트 컴프리핸션은 집합 특히 리스트에 대해 필터 역할을 할 수 있음
글자수가 2글자인 문자열만 추출해서 리스트에 담기
.split()과 len() 함수 이용
외부 라이브러리 사용
# 문장에서 단어 분리 - 외부 라이브러리 이용
!pip install konlpy # 공구상자 가져오기
import konlpy
from konlpy.tag import Okt
okt = Okt() # 형태소 분석기
okt.nouns("아버지가방에들어가신다")
띄어쓰기 만으로 단어를 구분하는데 무리가 있으므로 형태소를 분석할 수 있는 konlpy를 가져온다
이를 두 단어 이상인 것만 딕셔너리에 저장한다
한글폰트를 코랩에 넣은 뒤 wordclowd를 만들어본다
함수는 호출, 매개변수, 리턴값으로 이루어진다
help() 함수는 알고자 하는 함수에 대한 설명을 불러온다
함수는 코드를 재사용하거나 가독성을 높이기 위해 사용한다.
위에서 만들었던 메뉴 고른 뒤 전체 가격 출력하는 코드를 함수에 넣어보면 다음과 같이 간단하게 표현할 수 있다.
result = accumulate_menu()
total_price = getTotalPrice(result)
print(f'오늘 총 매출은 : {total_price}입니다.')
함수에서 매개변수는
- positional argument
- 기본 매개변수
- 가변 매개변수
- 키워드 가변매개변수가 있다
재귀함수
자기 자신을 호출하는 함
재귀를 하는 이유
해당되는 디렉토리의 정보를 읽어 모든 파일명 추출, 디렉토리 아래 디렉토리 아래 디렉토리 ...
if 문으로 다 읽기 어려움, lib로 구현되어 있지만,
들어가서 file이면 리스트에 담고, 디렉토리면 자기 자신 호출
피보나치, 트리
숫자 맞추기 게임
가위바위보 게임
# 리스트, 리스트 컴프리핸션
# 리스트 2차원 배열
# 조건문, 반복문, 함수
# 많이 해보기~~^o^
https://github.com/greatsangho/python_study/blob/main/20240822_day_3.ipynb
python_study/20240822_day_3.ipynb at main · greatsangho/python_study
Contribute to greatsangho/python_study development by creating an account on GitHub.
github.com
'프로그래밍 > SK AI 캠프' 카테고리의 다른 글
캠프 5일차 - 파이썬 모듈, 클래스 (0) | 2024.08.26 |
---|---|
SKN AI 캠프 1주차 (0) | 2024.08.23 |
캠프 4일차 - 함수와 예외 (0) | 2024.08.23 |
캠프 2일차 - 파이썬 반복문 (0) | 2024.08.21 |
캠프 1일차 - 파이썬 개발환경 세팅 및 파이썬 기초 (2) | 2024.08.20 |