1. 리스트
1.1 리스트(다른 언어의 배열)
1# 지하철 칸별로 10명, 20명, 30명 승차2subway1 = 103subway2 = 204subway3 = 3056subway = [10, 20, 30]7print(subway) # [10, 20, 30]
1.2 append, pop
1subway = ["푸", "피글렛", "티거"]2print(subway) # ['푸', '피글렛', '티거']34# 피글렛이 몇 번째 칸에 탔는가?5print(subway.index("피글렛")) # 167# 이요르 탑승8subway.append("이요르")9print(subway) # ['푸', '피글렛', '티거', '이요르']1011# 루를 푸와 피글렛 사이(인덱스 1 위치)에 삽입12subway.insert(1, "루")13print(subway) # ['푸', '루', '피글렛', '티거', '이요르']1415# 지하철 역마다 한 명씩 내림16print(subway.pop()) # 이요르 내림17print(subway)18print(subway.pop()) # 티거 내림19print(subway)20print(subway.pop()) # 피글렛 내림21print(subway)2223# 지하철에서 모두 내림24subway.clear()25print(subway) # []
1.3 요소개수, count
1# 같은 이름이 몇 명 있는지 확인2subway = ["푸", "피글렛", "티거"]3subway.append("푸") # 푸 추가45print(subway) # ['푸', '피글렛', '티거', '푸']6print(subway.count("푸")) # 2
1.4 정렬-sort-reverse
1num_list = [5, 2, 4, 3, 1]23num_list.sort() # 👉 오름차순 정렬4print(num_list) # [1, 2, 3, 4, 5]56num_list.sort(reverse=True) # 👉 내림차순 정렬7print(num_list) # [5, 4, 3, 2, 1]89num_list.reverse() # 👉 순서 뒤집기10print(num_list) # [1, 2, 3, 4, 5]111213my_list = [1, 3, 2]1415my_list.sort() # 리스트 정렬16print(my_list) # my_list 리스트 데이터 변경, [1, 2, 3]1718your_list = [1, 3, 2]19new_list = sorted(your_list) # 정렬할 리스트를 소괄호 안에 넣음2021print(your_list) # your_list 리스트 데이터는 변경되지 않음, [1, 2, 3]22print(new_list) # 정렬된 새로운 리스트, [1, 2, 3]
1.5 리스트 확장
1mix_list = ["푸", 20, True, [5, 2, 4, 3, 1]]2print(mix_list) # ['푸', 20, True, [5, 2, 4, 3, 1]]345mix_list = ["푸", 20, True]6num_list = [5, 2, 4, 3, 1]7num_list.extend(mix_list) # 리스트 합치기8print(mix_list) # ['푸', 20, True]9print(num_list) # [5, 2, 4, 3, 1, '푸', 20, True]
2. 딕셔너리 : 키와 값이 있는 구조
1cabinet = {3: "푸", 100: "피글렛"}23print(cabinet[3]) # key 3에 해당하는 value, 푸4print(cabinet[100]) # key 100에 해당하는 value, 피글렛56print(cabinet.get(3)) # key 3에 해당하는 value, 푸78print(cabinet.get(5)) # None9print("hi")10# print(cabinet[5]) # KeyError 발생11print("hi")1213print(cabinet.get(5, "사용 가능")) # key에 해당하는 값이 없으면 기본값을 사용하게 함, 사용 가능1415print(3 in cabinet) # True16print(5 in cabinet) # False171819cabinet = {"A-3": "푸", "B-100": "피글렛"}20print(cabinet["A-3"]) # 푸21print(cabinet["B-100"]) # 피글렛2223print("곰" in "곰돌이") # True24print("돌이" in "곰돌이") # True25print("푸" in "곰돌이") # False
2.1 값 변경, 추가, 삭제
1cabinet = {"A-3": "푸", "B-100": "피글렛"}23print(cabinet) # {'A-3': '푸', 'B-100': '피글렛'}45cabinet["A-3"] = "티거" # key에 해당하는 값이 있을 때 -> 값 변경6cabinet["C-20"] = "이요르" # key에 해당하는 값이 없을 때 - > 값 추가789print(cabinet) # {'A-3': '티거', 'B-100': '피글렛', 'C-20': '이요르'}1011del cabinet["A-3"] # key 'A-3'에 해당하는 값 삭제12print(cabinet) # {'B-100': '피글렛', 'C-20': '이요르'}
2.2 key, value만
1cabinet = {"A-3": "푸", "B-100": "피글렛"}23print(cabinet.keys()) # key만 출력45print(cabinet.values()) # value만 출력67print(cabinet.items()) # key, value 한 쌍으로 출력89cabinet.clear() # 값 전체 삭제10print(cabinet)
3. 튜플 : 내용 변경이 없을 때 사용
1menu = ("돈가스", "치즈돈가스")2print(menu[0]) # 돈가스3print(menu[1]) # 치즈돈가스45name = "피글렛"6age = 207hobby = "코딩"8print(name, age, hobby) # 피글렛 20 코딩91011(name, age, hobby) = ("피글렛", 20, "코딩")12print(name, age, hobby) # 피글렛 20 코딩1314(departure, arrival) = ("김포", "제주")15print(departure, ">", arrival) # 김포 > 제주1617(departure, arrival) = (arrival, departure)18print(departure, ">", arrival) # 제주 > 김포
4. 셋(set)
1""" 집합(set)2중복안됨, 순서없음3"""4my_set = {1, 2, 3, 3, 3}5print(my_set) # {1, 2, 3}67java = {"푸", "피글렛", "티거"} # 자바 개발자 세트8python = set(["푸", "이요르"]) # 파이썬 개발자 세트910# 교집합(자바와 파이썬을 모두 다룰 수 있는 개발자)11print(java & python) # {'푸'}12print(java.intersection(python)) # {'푸'}1314# 합집합(자바 또는 파이썬을 다룰 수 있는 개발자)15print(java | python) # {'이요르', '티거', '푸', '피글렛'}16print(java.union(python)) # {'이요르', '티거', '푸', '피글렛'}1718# 차집합(자바는 할 수 있지만 파이썬은 할 줄 모르는 개발자)19print(java - python) # {'피글렛', '티거'}20print(java.difference(python)) # {'피글렛', '티거'}2122# 파이썬 개발자 추가(기존 개발자: 푸, 이요르)23python.add("피글렛")24print(python) # {'푸', '이요르', '피글렛'}2526# 자바 개발자 삭제(기존 개발자: 푸, 피글렛, 티거)27java.remove("피글렛")28print(java) # {'푸', '티거'}
5. 자료구조 변환
1menu = {"커피", "우유", "주스"}2print(menu) # {'주스', '커피', '우유'}3print(type(menu)) # <class 'set'>45menu = list(menu) # 리스트로 변환6print(menu, type(menu)) # ['주스', '커피', '우유'] <class 'list'>78menu = tuple(menu) # 튜플로 변환9print(menu, type(menu)) # ('주스', '커피', '우유') <class 'tuple'>1011menu = set(menu) # 세트로 변환12print(menu, type(menu)) # {'주스', '커피', '우유'} <class 'set'>
6. 퀴즈
6.1 당첨자뽑기1
1"""2Quiz) 학교에서 파이썬 코딩 대회를 주최합니다.3참석률을 높이기 위해 댓글 이벤르를 진행합니다.4댓글 작성자 중 추점을 통해 1명은 치킨, 3명은 커피 쿠폰을 받습니다.5추첨 프로그램을 작성하시오.67조건 1 : 편의상 댓글은 20명이 작성했고, 아이디는 1~20이라고 가정8조건 2 : 댓글 내용과 상관없이 무작위로 추첨하되 중복 불가9조건 3 : random 모듈의 shuffle과 sample을 활용1011(출력 예제)12-- 당첨자 발표 --13치킨 당첨자 : 114커피 당첨자 : [2, 3, 4]15-- 축하합니다! --1617(활용 예제)18from random import *19lst = [1, 2, 3, 4, 5]20print(lst)21shuffle(lst)22print(lst)23print(sample(lst, 1))24"""25# 방법126from random import *2728users = range(1, 21) # 리스트 생성, 1부터 21 직전(20)까지 연속한 숫자 모음29users = list(users) # users를 리스트 자료구조로 변환30shuffle(users) # 리스트 섞기31winners = sample(users, 4) # users 리스트에서 중복 없이 4명 추첨3233print("-- 당첨자 발표 -- ") # 당첨자 출력34print("치킨 당첨자 : {0}".format(winners[0])) # 0번째 인덱스(1명)35print("커피 당첨자 : {0}".format(winners[1:])) # 1번째부터 마지막까지 슬라이싱(3명)36print("-- 축하합니다! --")
6.2 당첨자뽑기2
1"""2Quiz) 학교에서 파이썬 코딩 대회를 주최합니다.3참석률을 높이기 위해 댓글 이벤르를 진행합니다.4댓글 작성자 중 추점을 통해 1명은 치킨, 3명은 커피 쿠폰을 받습니다.5추첨 프로그램을 작성하시오.67조건 1 : 편의상 댓글은 20명이 작성했고, 아이디는 1~20이라고 가정8조건 2 : 댓글 내용과 상관없이 무작위로 추첨하되 중복 불가9조건 3 : random 모듈의 shuffle과 sample을 활용1011(출력 예제)12-- 당첨자 발표 --13치킨 당첨자 : 114커피 당첨자 : [2, 3, 4]15-- 축하합니다! --1617(활용 예제)18from random import *19lst = [1, 2, 3, 4, 5]20print(lst)21shuffle(lst)22print(lst)23print(sample(lst, 1))24"""2526# 방법227from random import *2829users = list(range(1, 21)) # range()를 list()로 바로 감싸서 한 줄 줄이기30shuffle(users)31chicken_winner = sample(users, 1) # 치킨 당첨자 1명 추첨32remain_users = set(users) - set(chicken_winner) # 전체 집합에서 치킨 당첨자 집합 제외33coffee_winners = sample(remain_users, 3) # 남은 19명 중에서 3명 추첨3435print("-- 당첨자 발표 --")36print("치킨 당첨자 : {0}".format(chicken_winner))37print("커피 당첨자 : {0}".format(coffee_winners))38print("-- 축하합니다! --")