파이썬 기초 | 리스트 함수(리스트 생성, 삭제, 정렬 등) | 리스트명.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

댓글