Python 07일차 수업 정리_break, continue, pass, 함수와 메소드, 컬렉션의 메소드(리스트list, 튜플tuple)
- 06일차 복습
- 기타제어문 (break문, continue, pass문)
- 함수와 메소드
- 컬렉션의 메소드_리스트(list), 튜플(tuple)
- 06일차 복습
반복문에는 while문, for문, range(), 이중 for문(중첩 for문)이 있다.
while문 | 특정 조건을 만족하는 동안 반복 실행 while 조건식 : 반복할 문장 |
for문 | 범위/횟수가 정해져 있는 동안 반복 실행 for 변수명(카운터 변수) in 집합(문자열, 컬렉션,...range()): 반복할 문장 |
rang() | 필요한 만큼의 숫자를 만드는 유용한 기능의 함수 (연속된 정수형) rang(시작값, 종료값, 스텝값) rang(시작값, 종료값) rang(종료값) |
이중 for문(중첩 for문) | 하나의 for문 안 또 다른 for문 사용 for 변수1 in 집합 : for 변수2 in 집합 : 반복실행할 문장 |
- 기타제어문 (break문, continue, pass문)
break문 | 처리 흐름을 강제적으로 종료 및 해당 블록에서 나가는 구문 |
continue | 블로 내의 처리를 건너뛰고 앞부분으로 돌아가, 다음 처리를 계속하는 구문 바로 다음 순번의 loop(반복)를 실행함 |
pass문 | 실행할 코드가 없는 것, 다음 행동을 계속해서 진행 |
pass문을 사용하는 경우
1) 조건문에서 넣어줄 실행문이 없을 경우
2) class 선언시, 초기에 넣어줄 값이 없을 경우
3) 코드 작성 후 동작 확인을 위해 실행 시 해당 부분에서 오류가 나지 않기 위해
break문
# 1) break문
# 1 ~ 10 숫자 중 5까지만 출력
for i in range(1, 11) :
if i <= 5 :
print(i)
else :
break #반복문을 강제 종료
# 2) continue
# 1 ~ 10 사이의 숫자 중 5만 건너뛰고 출력
for i in range(1, 11):
if i == 5 :
continue
print(i)
# 3) pass 문
if True :
pass #조건문에서 넣어 줄 실행문을 정하지 못했을 때 작성
print("조건문 종료")
- 함수와 메소드
함수 (어떤 기능을 하는 것) | 메소드 (함수와 비슷한 기능) | 차이점 |
어떤 행위를 하는 동작을 말하기 때문에 단독으로 사용 가능 함수의 값을 다른 변수에 대입할 수도 있음 |
객체(Object)와 함께 지정 특정 객체에 속해 있는 함수 |
함수는 단독으로 사용 메소드는 객체명 뒤에 .(피리오드) 붙여 사용 |
함수명 뒤에 () ex) name = input("이름입력 : ") |
객체명.메소드명() ex) str = "abcd" str.count('a') => str1에서 a가 몇개 있는지 count |
- 컬렉션의 메소드_리스트(list), 튜플(tuple)
리스트(list)
[ ] , 시퀀스 자료형, 중복값 허용
값의 수정, 추가, 삭제 언제나 가능
1) 리스트의 생성
# 리스트 생성
변수명 = 값
리스트명 = [값1, 2, ...]
#비어있는 리스트 생성
빈 리스트 / 형변환 시 사용
리스트명 = []
리스트명 = list()
# 리스트 생성
li1 = [1, 3, 5, 7, 'korea', 3.14, True]
print(li1, type(li1))
li2 = [1, 2, [1, 2], 1, 2, [1, 1, 1, 1, 1]]
print(li2, type(li2))
# 비어있는 리스트 생성
li3 = []
li4 =list()
print(li3, type(li3))
print(li4, type(li4))
# 문자열 -> 리스트
data = "hello python"
print(data, type(data))
data1 = list(data) #문자열 -> 리스트
print(data1, type(data1))
data2 = data.split()
# .split() 문자열 메소드로 ()안에 있는 것을 공백 기준으로 잘라서 리스트로 만들어준다
print(data2, type(data2))
2) 리스트 요소값 수정
인덱스(시퀀스 자료형)를 이용해서 값에 접근
리스트명[idx]
대입연산자 사용 시 왼쪽은 저장공간
리스트명[idx] = 값
a = [10, 20, 30]
print(a[0]) => 10
a[0] = 100
print(a[0]) => 100
print(a) => [100, 20, 30]
# 리스트 요소값 수정하기
li1 = [10, 20, 30, 40, 50, 60, 70, 80 ,90]
print(li1, type(li1))
print(li1[0], type(li1[0]))
li1[0] = 100
print(li1[0], type(li1[0]))
print(li1, type(li1))
print(li1[1:4], type(li1[1:4]))
li1[1:4] = [200, 300, 400]
print(li1)
print(li1[::2])
li1[::2] = [1, 2, 3, 4, 5]
print(li1)
[10, 20, 30, 40, 50, 60, 70, 80, 90] <class 'list'>
10 <class 'int'>
100 <class 'int'>
[100, 20, 30, 40, 50, 60, 70, 80, 90] <class 'list'>
[20, 30, 40] <class 'list'>
[100, 200, 300, 400, 50, 60, 70, 80, 90]
[100, 300, 50, 70, 90]
[1, 200, 2, 400, 3, 60, 4, 80, 5]
3) 리스트의 메소드
어떤 리스트에 적용시킬지 소속을 알려야 함
리스트명.메소드명()
.append(값) | 값을 리스트의 맨 뒤에 추가한다 |
.insert(idx, 값) | 값을 해당 idx에 추가한다 |
.extend(리스트) | 리스트와 다른 리스트를 연결한다 ( + 연산자와 다름 ) |
.remove(값) | 값을 삭제한다. (삭제할)값이 없으면 오류발생 |
.pop(idx) | 해당 인덱스의 요소를 삭제한다, idx를 넣어주지 않으면 리스트의 맨 뒤 값이 삭제됨 |
.sort() | 요소들을 오름차순으로 정리해준다(리스트 자체를 정렬) |
.sort(reverse = True) | 요소를 내림차순으로 정렬해준다 |
.reverse() | 리스트를 역순으로 정렬 |
# 리스트 메소드
li1 = [1, 3, 5, 7, 9]
# 추가 append, insert
li1.append(10)
print(li1)
li1.append(11)
print(li1)
li1.insert(1, 2) # 1번 인덱스 위치에 2값을 추가
print(li1)
li1.insert(3, 4)
print(li1)
li2 = [10, 30]
print(li2)
# li2.append(50, 70, 90) # append는 값을 하나밖에 추가 못함
li3 = [50, 70, 90]
print(li2 + li3, type(li2 + li3)) # 원본이 변경되지 않음
print(li2)
li2.extend(li3) # li2리스트에 li3를 연결
print(li2) #li2 리스트 원본이 변경됨
# .remove(값) , .pop(idx)
li2.remove(50)
print(li2)
li3 = [1, 2, 1, 3, 1, 3, 5, 7]
print(li3)
li3.remove(1)
print(li3) # 중복값이 있을때는 인덱스번호가 가장 빠른것부터 삭제
# / 1을 전부 없애는게 아닌, 맨 앞의 1만 삭제
li3.remove(1)
print(li3)
li3.remove(1)
print(li3)
# li3.remove(1) 없는 값을 삭제하려고 하면 오류 발생
print(li3)
# li3.pop(10) 인덱스 범위를 벗어나면 오류 발생
li3.pop(0)
print(li3)
li3.pop(2)
print(li3)
li3.pop() # 인덱스 번호 X 맨 뒤의 요소 삭제
print(li3)
[1, 3, 5, 7, 9, 10]
[1, 3, 5, 7, 9, 10, 11]
[1, 2, 3, 5, 7, 9, 10, 11]
[1, 2, 3, 4, 5, 7, 9, 10, 11]
[10, 30]
[10, 30, 50, 70, 90] <class 'list'>
[10, 30]
[10, 30, 50, 70, 90]
[10, 30, 70, 90]
[1, 2, 1, 3, 1, 3, 5, 7]
[2, 1, 3, 1, 3, 5, 7]
[2, 3, 1, 3, 5, 7]
[2, 3, 3, 5, 7]
[2, 3, 3, 5, 7]
[3, 3, 5, 7]
[3, 3, 7]
[3, 3]
# 정렬
# .sort(), .sort(reverse = True)
li1 = [1, 3, 2, 5, 2, 5, 4, 6, 1]
print(li1, type(li1))
li1.sort()
print(li1)
li1.sort(reverse = True)
print(li1)
li2 = ['a', 'b', 'c', 1, 3, 5, 3]
# li2.sort() 숫자와 문자는 같이 정렬을 할 수가 없음
print(li2)
# .reverse() : 역순으로 정렬
li2.reverse()
print(li2)
# in, not in => 특정 멤버 조회
li = ['봄', '여름', '가을', '겨울']
print('봄' in li) #li에 봄이라는게 있니??? => "응", 있어
print("사자" not in li) #li에 사자라는게 없니??? => "응", 없어
[1, 3, 2, 5, 2, 5, 4, 6, 1] <class 'list'>
[1, 1, 2, 2, 3, 4, 5, 5, 6]
[6, 5, 5, 4, 3, 2, 2, 1, 1]
['a', 'b', 'c', 1, 3, 5, 3]
[3, 5, 3, 1, 'c', 'b', 'a']
True
True
4) 리스트에서 쓸 수 있는 함수
# 리스트에서 쓸 수 있는 함수
li1 = [1, 3, 5, 7, 9]
print(f"li1의 길이 : {len(li1)}")
print(f"li1의 최대값 : {max(li1)}") #max 함수는 요소 안에 숫자(정수, 실수)만 있을 때 사용 가능하다
print(f"li1의 최소값 : {min(li1)}")
print(f"li1의 합계 : {sum(li1)}")
print(f"li1의 평균 : {sum(li1)/len(li1)}")
str1 = "안녕하세요"
print(len(str1))
튜플(tuple)
( ), 시퀀스 자료형, 중복값 허용
값의 수정, 추가, 삭제 불가능
리스트와 유사하여 : 읽기 전용 리스트
1) 튜플의 생성
튜플명 = (값1, 값2,..)
튜플명 = 값1, 값2,.. #튜플의 패킹
튜플명 = 값, #튜플 요소가 1개 밖에 없을 때는 ,붙여야함!!!!
비어있는 튜플의 생성
튜플명 = ()
튜플명 = tuple()
# 튜플의 생성
tu1 = 10, 20, 30, 10, 10, 'a', 'b', 50
print(tu1, type(tu1))
tu2 = 10,
print(tu2, type(tu2))
# 비어있는 튜플의 생성
tu3 = ()
print(tu3, type(tu3))
tu4 =tuple()
print(tu4, type(tu4))
2) 튜플의 요소 접근하기
시퀀스 자료이기 때문에 리스트와 같지만, 튜플은 수정이 불가능
-> 하려면 튜플 자료형을 형변환하여 수정가능
# 튜플의 요소 접근하기
print(tu1)
print(tu1[0], type(tu1[0])) # 인덱싱
print(tu1[0:4], type(tu1[0:4])) # 슬라이싱
# 튜플의 요소 수정하기
# tu1[0] = 1 튜플은 수정 불가!
print(tu1, type(tu1))
# tuple -> list -> tuple
li = list(tu1) # 튜플로 만든 tu1을 list로 형변환 후 변수에 대입
print(li, type(li)) # li는 tu1의 요소값을 그대로 갖고 있고 타입만 list로 변환됨
li[0] = 1 # 리스트에서 요소값이 수정 가능하여 대입연산자 = 을 사용해 요소 수정
print(li, type(li)) # 요소값 변경 확인
tu1 = tuple(li) # li를 tuple로 형변환 변수에 대입
print(tu1, type(tu1)) # li의 요소값을 그대로 갖고 있고 타입만 list로 형변환됨
튜플은 요소 추가/삭제 불가능
튜플 자체 삭제만 가능
print(tu1)
# tu1.append(10) 튜플에서 요소 추가 불가능
# tu1.remove(1) 튜플에서 요소 삭제 불가능
del(tu1) # 튜플 자체 삭제는 가능, 요소 삭제만 불가능
print(tu1) # 없어져서 오류뜸
3) 튜플의 메소드
.count(값) | 해당값이 몇개 있는지 알려줌 |
.index(값) | 해당값의 인덱스 번호를 알려줌 값에 중복이 있다면 맨 앞의 인덱스 번호인 것을 출력 |
b = 1, 1, 2, 3, 4, 5, 5, 5
b.count(5) => 3 (b안에 5가 몇개 있냐)
b.index(5) => 5 (5가 인덱스번호로 어디 있냐)
# 튜플의 메소드
tu = (1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 1, 2)
print(tu, type(tu))
print(tu.count(1))
print(tu.index(1)) # 1 이라는 값의 인덱스 번호
print(tu.index(1, 5, 10)) #(찾을값, 시작할 인덱스, 종료할 인덱스)
4) 튜플에서 쓸 수 있는 함수
tu = (10, 20, 30, 40, 50)
print(f"tu의 길이 : {len(tu)}")
print(f"tu의 최대값 : {max(tu)}")
print(f"tu의 최소값 : {min(tu)}")
print(f"tu의 합계 : {sum(tu)}")
print(f"tu의 평균 : {sum(tu) / len(tu)}")
2024.02.01