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])
댓글