ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 07일차 수업 정리_break, continue, pass, 함수와 메소드, 컬렉션의 메소드(리스트list, 튜플tuple)
    Python 2024. 2. 1. 13:56

    - 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

연의 취업 도전기.