Rylah's Study & Daily Life

[Python Basic] 05. 리스트, 사전(Hash), 튜플(Tuple), 집합(Set), 자료구조 형변환 본문

Study/Python Basic

[Python Basic] 05. 리스트, 사전(Hash), 튜플(Tuple), 집합(Set), 자료구조 형변환

Rylah 2022. 1. 18. 13:43
# 1. 리스트 []

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

subway = [30, 40, 50]
print(subway)

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

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

# 하하씨가 다음 정류장에서 다음 칸에 탔음
subway.append("하하")
print(subway)

# 정형돈씨를 유재석 / 조세호 사이에 태워보기
#subway.insert(1, "정형돈")
subway.insert((subway.index("유재석") + 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("유재석"))


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

# 순서 뒤집기도 가능
num_list.reverse()
print(num_list)

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


# 다양한 자료형 함께 사용 가능
num_list = [10, 2, 4, 7, 1]
mix_list = ["조세호", 175, False]
print(mix_list)

# 리스트 확장
num_list.extend(mix_list)
print(num_list)

# 2. 사전

cabinet = {3:"유재석", 100:"김태호"} # Key : Value
print(cabinet)
print(cabinet[3])
print(cabinet[100])
print(cabinet.get(3))
print(cabinet.get(100))

# print(cabinet[5]) # Error
print(cabinet.get(5)) # no Error 
print(cabinet.get(5, "사용가능"))
print("hi")

print()

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)
cabinet["A-3"] = "김종국"
cabinet["C-20"] = "조세호"

print(cabinet)

# 손님이 감
del cabinet["A-3"]
print(cabinet)

# key 들만 출력
print(cabinet.keys())

# Value 들만 출력
print(cabinet.values())

# key, value 쌍으로 출력
print(cabinet.items())

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

# 3. 튜플
# 변경 되지 않는 목록 사용할 때 이용
# 속도가 리스트보다 빠름

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

# menu.add("생선까스") # Error
name = "김종국"
age = 20
hobby = "Coding"
print(name, age, hobby)
(name, age, hobby) = ("김종국", 21, "Coding")
print(name, age, hobby)

# 집합 (Set)
# 중복 안됨 순서 없음
my_set = {1,2,3,3,3}
print(my_set)

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)

# 5. 자료구조의 변경
# Coffee Shop
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) 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.
참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.
댓글 작성자들 중에 추첨을 통해 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))
# Quiz) 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.
# 참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.
# 댓글 작성자들 중에 추첨을 통해 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))
users = list(users)
#print(type(users))
print(users)
shuffle(users)
print(users)

getter = sample(users, 4)

print(" -- 당첨자 발표 -- ")
print("치킨 당첨자 : {0}".format(getter[0]))
print("커피 당첨자 : {0}".format(getter[1:]))
print(" -- 축하합니다 -- ")