파이썬 기초 | 리스트 함수(리스트 생성, 삭제, 정렬 등) | 리스트명.append() | 2차원 리스트 | 튜플 개념 | 딕셔너리 함수 | 딕셔너리 {키 : 값}

    728x90

     

    1. 리스트

    : 리스트 이름 = [값1, 값2, 값3, ...]

    : 하나씩 사용하던 변수를 붙여서 한 줄로 붙여놓은 개념

     

    * numList = [0, 1, 2, 3]

    [0] [1] [2] [3]

     

    numList = [10,20,30,40]
    
    print(type(numList))
    print(numList[0])
    print(numList[1])
    print(numList[2])
    print(numList[3])

     

    ▶ 리스트 생성

    numList = [0,0,0,0]
    hap = 0
    
    numList[0] = int(input("숫자1: "))
    numList[1] = int(input("숫자2: "))
    numList[2] = int(input("숫자3: "))
    numList[3] = int(input("숫자4: "))
    
    hap = numList[0] + numList[1] + numList[2] + numList[3]
    
    print("합계 = > ", hap)

     

    ▶ 리스트의 다양한 형태

    - 비어있는 리스트

    - 정수로만 구성된 리스트

    - 문자열로만 구성된 리스트

    - 다양한 데이터 형식을 섞은 리스트 (자주 사용하지 않음)

    numList = []     # 리스트 초기화
    intList = [10,20,30]
    strList = ["난생처음","파이썬","Good"]
    mixList = [10, 20, '파이썬']
    
    print(numList)
    print(intList)
    print(strList)
    print(mixList)

     

    ▶ 리스트를 하나씩 추가하기

    : 리스트이름.append(값)

    numList = []
    numList.append(1)
    numList.append(3)
    numList.append(5)
    numList.append(7)
    print(numList)

     

    for문을 활용한 리스트

    numList = []
    
    for i in range(0,4) :
        numList.append(0)
    len(numList)

     

    리스트에 값 대입

    numList = []
    
    for i in range(0,4) :
        numList.append(0)
        
    hap = 0
    for i in range(0,4) :
        numList[i] = int(input("숫자: "))
    
    hap = numList[0] + numList[1] + numList[2] + numList[3]
    
    print("합계 => ", hap)

     

    ▶ 리스트 값에 접근하기

     

    [첨자가 음수 값인 경우]

    : 맨 뒤-1로 시작하여 그 바로 앞이 -2가 됨.

    numList = [10,20,30,40]
    print("numList[-1]은 ", numList[-1], ", numList[-2]는 ", numList[-2])

     

    [콜론(:)을 사용하여 범위를 지정하는 경우]

    - 리스트이름[시작 첨자 : 끝 첨자+1] : 리스트의 시작부터 끝까지 모두 지정함.

    - 콜론의 앞이나 뒤의 숫자를 생략할 수도 있음.

     

    [리스트의 덧셈, 곱셈 가능]

    - 곱셈의 경우 리스트 안의 내용을 곱셈 값만큼 반복해줌.

     

     

    [연습문제]

     

    * 여러 개의 명언 리스트를 저장해놓고, 명언을 랜덤하게 출력하는 코드 작성하기

    import random
    
    Wise_saying = [
        "작은 기회로부터 종종 위대한 업적이 시작된다.",
        "1퍼센트의 가능성, 그것이 나의 길이다.",
        "행복은 습관이다. 그것을 몸에 지녀라."
        "계단을 밟아야 계단 위에 올라설 수 있다.",
        "내일은 내일의 태양이 뜬다.",
        "행복한 삶을 살기 위해 필요한 것은 거의 없다.",
        "피할 수 없다면 즐겨라.",
        "신은 용기있는 자를 결코 버리지 않는다.",
        "언제나 현재에 집중할 수 있다면 행복할 것이다.",
        "삶이 있는 한 희망은 있다."
    ]
    
    today = random.randint(0,len(Wise_saying)-1)
    print("오늘의 명언: ", Wise_saying[today])

     

     

     

    ▶ 리스트 값 변경하기

     

    [첨자를 사용하여 값 변경하기]

    numList = [10,20,30]
    numList[1] = 200
    print(numList)

     

    [연속된 범위의 값 변경하기]

    numList = [10,20,30]
    numList[1:2] = [200,201]
    print(numList)

     

    [리스트 안에 리스트 추가하기]

    : 자주 사용하는 방법은 아님.

    numList = [10,20,30]
    numList[1] = [200,201]
    print(numList)

     

     

    ▶ 리스트에 값 삽입하기

    * 리스트명.append(값) : 맨 뒤에 값 추가하기

    * 리스트명.insert(위치, 값) : 정해진 위치에 값 삽입하기

    numList = [10,20,30]
    numList.insert(1,123)
    print(numList)

     

     

    ▶ 리스트에 값 삭제하기

    * 리스트명.del() : 리스트의 항목 삭제

    numList = [10,20,30]
    del(numList[1])
    print(numList)

     

    => del() 함수에 리스트 이름을 넣으면 리스트가 통째로 삭제됨.

    여기서 삭제된 리스트를 print()하게 되면 오류 발생함.

     

    * 리스트명.remove(지울 값) : 리스트에서 특정 값 삭제

    : 중복된 값을 지울 때 모든 값을 지우는 것이 아니라 처음 만나는 한 개의 값만 삭제함.

     

    numList = [10,20,30]
    numList.remove(10)
    print(numList)
    numList = [10,20,30,10,10]
    numList.remove(10)
    print(numList)

     

    리스트에 값 추출하기

    * 리스트명.pop() : 제일 뒤의 값을 뽑아서 값을 알려준 뒤 삭제함.

    numList = [10,20,30]
    numList.pop()

     

    리스트에서 개수 세기

    * 리스트명.count(찾을 값) : 찾을 값이 몇 개인지 개수를 세서 알려줌.

    numList = [10,20,30,10,10]
    numList.count(10)

     

     리스트 정렬하기 

    * 리스트명.sort(): 리스트의 값을 정렬함. (오름차순 정렬)

    * 리스트명.sort(reverse = True) : 내림차순으로 정렬함.

    numList = [20,10,40,50,30]
    numList.sort()
    print(numList)
    
    
    numList = [20,10,40,50,30]
    numList.sort(reverse = True)
    print(numList)

     

     리스트의 차례 반전하기

    * 리스트명.reverse() : 리스트의 마지막 인덱스부터 위치가 반대로 됨.

    numList = [20,10,40,50,30]
    numList.reverse()
    print(numList)

    * 리스트명2 = 리스트명.copy() : 리스트를 새로운 리스트로 복사함.

    numList = [10,20,30]
    numList2 = numList.copy()
    print(numList2)

     

     리스트 함수

     

    *max() : 최대값    /  min() : 최소값

    * sum() : 합계

    * join 메소드

     


    2. 2차원 리스트

    : 1차원 리스트를 여러 개 연결한 리스트

    : 2개의 첨자를 사용함. 리스트명[행][열]

    numList2 = [[1,2,3,4],
               [5,6,7,8],
               [9,10,11,12]]
    
    for i in range(0,3) :
        for k in range(0,4) :
            print("", numList2[i][k], end = '')
        print("")

     

    [연습문제]

     

    * 동계올림픽에서 피겨 스케이팅 경기는 심사위원 5명이 점수를 각각 10점 만점으로 줄 수 있다.

    홍길동 선수의 경기 후에 5명의 심사위원의 점수를 리스트에 저장하고, 점수의 평균을 구하는 프로그램을 구현해보자.

     

    print("홍길동 선수 경기 끝났습니다~~ 짝짝짝")
    
    평가점수 = []
    
    for i in range(5) :
        점수 = int(input("평가점수 = >"))
        평가점수.append(점수)
        
    합계 = 0
    
    for i in range(5) :
        합계 += 평가점수[i]
        
        평균 = 합계 / 5
        
    print("평균점수: ", 평균)

     

     

    [연습문제]

     

    * 컴퓨터끼리 가위바위보 대결하기

    컴퓨터 A의 승, 컴퓨터 B의 승,  무승부 각각의 결과의 개수를 세고 출력하기

    import random
    
    toss = []
    
    for i in range(10000) :
        comA = random.choice(["가위","바위","보"])
        comB = random.choice(["가위","바위","보"])
    
        if comA == "가위" :
            if comB == "가위" :
                toss.append("없음")
            elif comB == "바위" :
                toss.append("B")
            elif comB == "보" :
                toss.append("A")
        elif comA == "바위" :
            if comB == "가위" :
                toss.append("A")
            elif comB == "바위" :
                toss.append("없음")
            elif comB == "보" :
                toss.append("B")
        elif comA == "보" :
            if comB == "가위" :
                toss.append("B")
            elif comB == "바위" :
                toss.append("A")
            elif comB == "보" :
                toss.append("없음")
    
    aWin = toss.count("A")
    bWin = toss.count("B")
    noWin = toss.count("없음")
    
    print("10000번 중 A컴의 승: ", aWin)
    print("10000번 중 B컴의 승: ", bWin)
    print("10000번 중 A,B컴의 무승부: ", noWin)

     


    3. 튜플: ( )

     

    ▶ 튜플의 개념

    - 읽기 전용의 리스트 

    - 리스트와 비슷하지만 수정은 불가능 (쓰기, 삭제 안됨)

    - 튜플 자체를 삭제하려면 .del()사용

     

    - 소괄호로 생성함(But 괄호가 없어도 무방함)

    numTup1 = (10,20,30)
    print(numTup1)
    # (10,20,30)
    
    numTup2 = 10,20,30
    print(numTup2)
    # (10,20,30)

    - 튜플의 항목이 하나일 때 튜플 뒤에 콤마(,)를 붙여야 함.

     

     

    ▶ 튜플의 활용

    - 튜플이름[인덱스] : 특정 항목에 접근하기

    - 콜론(시작인덱스 : 끝인덱스+1) : 튜플의 범위에 접근하기

    - 튜플의 더하기 및 곱하기 연산

     

     


    4. 딕셔너리: { }

     

    ▶ 딕셔너리의 개념

    - 2개의 쌍이 하나로 묶이는 자료구조를 의미

    - 키(key)값(value)의 쌍으로 이루어짐

    - 키(key): 단어, 값(value) : 뜻

     

     

    ▶ 딕셔너리 생성하기

    - 키(key): 1, 2, 3     /  - 값(value): a, b, c

    myDict = {1 : "a", 2 : "b", 3 : "c"}
    print(myDict)

    - 키와 값을 반대로 생성해도 무방함. (순서가 없음)

     

     

    ▶ 딕셔너리 생성

    - 딕셔너리는 여러 개의 정보를 하나의 변수로 표현할 때 유용하게 사용됨

    ex. 회사원 홍길동의 정보 딕셔너리로 생성하기

    키(key) 값(value)
    사번 1111
    이름 홍길동
    부서 인사과
    empDict = {"사번" : 1111, "이름" : "홍길동", "부서" : "인사과"}
    print(empDict)

    - 정보를 추가할 떄는 키와 값을 쌍을 추가해야 함.

    : 딕셔너리 이름[키] = "값" 의 형식을 사용함.

    empDict["연락처"] = "010-1234-5678"
    print(empDict)

    - 기존의 정보 변경

    empDict["부서"] = "홍보과"
    print(empDict)]
    
    # {'사번': 1111, '이름': '홍길동', '부서': '홍보과', '연락처': '010-1234-5678'}

     

    - 딕셔너리의 키는 중복되지 않고 유일해야 함.

    : 만약 동일한 키를 가지는 딕셔너리를 사용하면 오류는 나지 않지만 중복된 키의 마지막 키 값이 적용되어 출력됨.

    empDict2 = {"사번" : 1000, "이름" : "홍길동", "사번" : 2000}
    print(empDict2)

     

     

    ▶ 딕셔너리 삭제

    * del(딕셔너리명[키]) 함수를 이용

    del(empDict["부서"])
    print(empDict)

     

    * 키를 이용해 값 구하기

    empDict = {"사번" : 1111, "이름" : "홍길동", "부서" : "인사과"}
    print(empDict["사번"])
    print(empDict["이름"])
    print(empDict["부서"])

     

     

    ▶ 딕셔너리의 사용

    * 딕서너리명.keys() : 딕셔너리의 모든 키만 뽑아서 반환

    → list(딕셔너리명.keys())  : 출력결과에 dict_keys가 붙지 않음

     

    * 딕셔너리명.value() : 딕셔너리의 모든 값을 리스트로 만들어서 반환

    list(딕셔너리명.values())  : 출력결과에 dict_keys가 붙지 않음

     

    * 딕셔너리명.items() : 튜플 형태로 구하기

     

     

    ▶ 딕셔너리와 관련된 유용한 함수

    * in : 딕셔너리 안에 키가 있는지 확인

    - 딕셔너리 안에 키가 있으면 True, 없으면 False

     

    * for문 : 딕셔너리에 저장된 것을 한 건씩 출력 

    for key in empDict.keys() :
        print(key, empDict[key])

     

    [연습문제]

     

    * 가수 정보를 딕셔너리에 저장하고 출력하기

    • 이름: 트와이스
    • 구성원 수: 9
    • 데뷔: 서바이벌 식스틴
    • 대표곡: CRY FOR ME
    singer = {}
    
    singer['이름'] = "트와이스"
    singer['구성원 수'] = 9
    singer["데뷔"] = "서바이벌 식스틴"
    singer["대표곡"] = "CRY FOR ME"
    
    for k in singer.keys() :
        print(k, ":", singer[k])

    728x90

    댓글