본문 바로가기
Language/Python

Python Practice Day-2 (파이썬 연습 2일차)

by 드럼치는 코린이 2021. 1. 5.
728x90
반응형

  • 리스트

여러 개의 변수를 각각 지정하지 않고 []를 이용하여 하나의 변수로 활용할 수 있다.

# 리스트 []

# 지하철 칸별로 10명, 20명, 30명
# subway1 = 10
# subway2 = 20
# subway3 = 30

subway = [10, 20, 30]
print(subway) # 10, 20, 30

subway = ["유재석", "조세호", "박명수"]
print(subway) # ['유재석', '조세호', '박명수']

# 조세호씨가 몇 번째 칸에 타고 있는가?
print(subway.index("조세호")) # 1

# 하하씨가 다음 정류장에서 다음 칸에 탐
subway.append("하하")
print(subway) # ['유재석', '조세호', '박명수', '하하']

# 정형돈씨를 유재석 / 조세호 사이에 태워 봄
subway.insert(1, "정형돈")
print(subway) # ['유재석', '정형돈', '조세호', '박명수', '하하']

# 지하철에 있는 사람을 한 명씩 뒤에서 꺼냄
print(subway.pop()) # 하하
print(subway) # ['유재석', '정형돈', '조세호', '박명수']

print(subway.pop()) # 박명수
print(subway) # ['유재석', '정형돈', 조세호']

print(subway.pop()) # 조세호
print(subway) # ['유재석', '정형돈']

# 같은 이름의 사람이 몇 명 있는지 확인
subway.append("유재석")
print(subway) # ['유재석', '정형돈', '유재석']
print(subway.count("유재석")) # 2

# 정렬도 가능
num_list = [5 ,2, 4, 3, 1]
num_list.sort()
print(num_list) # [1, 2, 3, 4, 5]

# 순서 뒤집기 가능
num_list.reverse()
print(num_list) # [5, 4, 3, 2, 1]

# 모두 지우기
num_list.clear()
print(num_list) # []

# 다양한 자료형 함께 사용가능
mix_list = ["조세호", 20, True]
print(mix_list) # ['조세호', 20, True]

# 리스트 확장
num_list = [5 ,2, 4, 3, 1]
mix_list = ["조세호", 20, True]
num_list.extend(mix_list)
print(num_list) # [5, 2, 4, 3, 1, '조세호', 20, True]

  • 사전

하나의 key에는 하나의 cabinet만 열 수 있고, key는 중복이 있을 수 없다. 

cabinet = {3:"유재석", 100:"김태호"} # 3번키는 유재석, 100번키는 김태호가 쓰는 중
print(cabinet[3]) # 유재석
print(cabinet[100]) # 김태호

print(cabinet.get(3)) # 유재석
# print(cabinet[5]) # 오류,,, 5라는 키가 없기 때문에.
print(cabinet.get(5)) # None
print(cabinet.get(5, "사용가능")) # 사용가능

print(3 in cabinet) # True
print(5 in cabinet) # False

# 숫자 말고 문자열도 사용 가능
cabinet = {"A-3":"유재석", "B-100":"김태호"}
print(cabinet["A-3"]) # 유재석
print(cabinet["B-100"]) # 김태호

# 새 손님 (데이터 업데이트)
print(cabinet) # {'A-3': '유재석', 'B-100': '김태호'}
cabinet["A-3"] = "김종국"
cabinet["C-20"] = "조세호"
print(cabinet) # {'A-3': '김종국', 'B-100': '김태호', 'C-20': '조세호'}

# 간 손님 (데이터 삭제)
del cabinet["A-3"]
print(cabinet) # {'B-100': '김태호', 'C-20': '조세호'}

# key 들만 출력
print(cabinet.keys()) # dict_keys(['B-100', 'C-20'])

# value 들만 출력
print(cabinet.values()) # dict_values(['김태호', '조세호'])

# key, value 모두 출력
print(cabinet.items()) # dict_items([('B-100', '김태호'), ('C-20', '조세호')])

# 목욕탕 폐점
cabinet.clear()
print(cabinet) # {}

  • 튜플

튜플은 리스트와 다르게 내용 변경과 추가를 할 수 없어 제한적이나 속도가 리스트보다 빨라 변경되지 않는 목록을 사용할 때 활용하면 좋다.

menu = ("돈까스", "치즈까스")
print(menu[0]) # 돈까스
print(menu[1]) # 치즈까스

# menu.add("생선까스") # 오류

name = "김종국"
age = 20
hobby = "코딩"
print(name, age, hobby) # 김종국 20 코딩

(name, age, hobby) = ("김종국", 20, "코딩")
print(name, age, hobby) # 김종국 20 코딩

  • 세트 (집합)

중복 x, 순서 x

my_set = {1,2,3,3,3}
print(my_set) # {1, 2, 3} (중복이 허용되지 않기 때문에)

java = {"유재석", "김태호", "양세형"}
python = set(["유재석", "박명수"]) # 리스트를 만들고 셋으로 감싸기

# 교집합 (java 와 python 을 모두 할 수 있는 개발자)
print(java & python) # {'유재석'}
print(java.intersection(python)) # {'유재석'}

# 합집합 (java 도 할 수 있거나 python 할 수 있는 개발자)
print(java | python) # {'박명수', '김태호', '유재석', '양세형'}
print(java.union(python)) # {'박명수', '김태호', '유재석', '양세형'} (순서가 없다)

# 차집합 (java는 할 수 있지만 python은 할 줄 모르는 개발자)
print(java - python) # {'양세형', '김태호'}
print(java.difference(python)) # {'양세형', '김태호'}

# python 할 줄 아는 사람이 늘어남
python.add("김태호")
print(python) # {'김태호', '유재석', '박명수'}

# java 를 잊었어요
java.remove("김태호")
print(java) # {'양세형', '유재석'}

  • 자료구조의 변경

set일 때는 {}, list일 때는 [], tuple일 때는 ()로 바뀐다.

menu = {"커피", "우유", "주스"}
print(menu) # {'커피', '우유', '주스'}
print(menu, type(menu)) # {'우유', '커피', '주스'} <class 'set'>

menu = list(menu)
print(menu, type(menu)) # ['주스', '우유', '커피'] <class 'list'>

menu = tuple(menu)
print(menu, type(menu)) # ('주스', '커피', '우유') <class 'tuple'>

menu = set(menu)
print(menu, type(menu)) # {'커피', '주스', '우유'} <class 'set'>

  • Quiz 4)

당신의 학교에서는 파이썬 코딩 대회를 주최합니다.

참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.

댓글 작성자들 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다.

추첨 프로그램을 작성하시오.

 

조건 1 : 편의상 댓글은 20명이 작성하였고 아이디는 1~20이라고 가정

조건 2 : 댓글 내용과 상관없이 무작위로 추첨하되 중복 불가

조건 3 : random 모듈의 shuffle과 sample을 활용

 

(출력 예제)

-- 당첨자 발표 --

치킨 당첨자 : 1

커피 당첨자 : [2, 3, 4]

-- 축하합니다 --

 

(활용 예제)

from random import *

lst = [1,2,3,4,5]

print(lst)

shuffle(lst)

print(lst)

print(sample(lst, 1))

from random import *

users = range(1, 21) # 1 ~ 20 까지의 숫자를 생성
#print(type(users)) # <class 'range'>
users = list(users)
#print(type(users)) # <class 'list'>

print(users) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
shuffle(users)
print(users) # [12, 19, 17, 9, 20, 7, 16, 13, 14, 4, 10, 6, 1, 3, 8, 15, 5, 2, 18, 11]

winners = sample(users, 4) # 4명 중에서 1명은 치킨, 3명은 커피

print(" -- 당청자 발표 -- ") #  -- 당청자 발표 -- 
print("치킨 당첨자 : {0}".format(winners[0])) # 치킨 당첨자 : 5
print("커피 당첨자 : {0}".format(winners[1:])) # 커피 당첨자 : [14, 4, 12]
print(" -- 축하합니다 -- ") # -- 축하합니다 -- 
728x90
반응형

댓글