기초편3:(리스트 딕셔너리 튜플 세트)

기초편3:(리스트 딕셔너리 튜플 세트)

리스트

# 리스트 [] # 지하철 칸 별로 10명, 20명, 30명 subway = [10, 20, 30] #[10, 20, 30] subway = ["유재석", "정준하", "하하"] #['유재석', '정준하', '하하'] #하하씨가 몇 번째 칸에 타고 있는가? subway.index("하하") #2 # 신봉선씨가 다음 칸에서 탔다 subway.append("신봉선") #['유재석', '정준하', '하하', '신봉선'] # 미주를 유재석과 정준하 사이에 태우기 subway.insert(1, "미주") #['유재석', '미주', '정준하', '하하', '신봉선'] # 지하철에 있는 사람들을 뒤에서 꺼냄 subway.pop() #['유재석', '미주', '정준하', '하하'] # 같은 이름의 사람이 몇 명 있는지 확인 subway.insert(0, "유재석") #['유재석', '유재석', '미주', '정준하', '하하'] print(subway.count("유재석")) #2 # 정렬도 가능 num = [5, 4, 2, 3, 1] num.sort() print(num) #[1, 2, 3, 4, 5] # 순서 뒤집기 가능 num.reverse() print(num) #[5, 4, 3, 2, 1] # 모두 지우기 num.clear() print(num) #[] # 다양한 자료형 함께 사용 num_list = [4, 1, 3, 4, 5] mix_list = ["유재석", 20, True] # 리스트 확장 num_list.extend(mix_list) print(num_list) #[4, 1, 3, 4, 5, '유재석', 20, True]

사전(directory)

cabinet = {3:"유재석", 100:"김태호"} #방법 1 print(cabinet[3]) #유재석 print(cabinet[100]) #김태호 #방법 2 print(cabinet.get(3)) #유재석 print(cabinet.get(100)) #김태호 print(cabinet[5]) #Error! print(cabinet.get(5)) #None print(cabinet.get(5, "사용가능")) #사용가능 #대괄호로 값을 가져올 때는 에러, get을 이용했을 땐 None 출력 print(3 in cabinet) #True print(5 in cabinet) #False # 새 손님 cabinet["50-A"] = "정준하" #{3: '유재석', 100: '김태호', '50-A': '정준하'} # value의 값 바꾸기 cabinet[3] = "하하" print(cabinet) #{3: '하하', 100: '김태호', '50-A': '정준하'} # 간 손님 del cabinet[3] #{100: '김태호', '50-A': '정준하'} # key 들만 출력 print(cabinet.keys()) #dict_keys([100, '50-A']) # value 들만 출력 print(cabinet.values()) #dict_values(['김태호', '정준하']) # key, value 쌍으로 출력 print(cabinet.items()) #dict_items([(100, '김태호'), ('50-A', '정준하')]) # 다나가게 하기 cabinet.clear() #{} print(cabinet)

튜플(Tuple)

리스트와 다르게 내용 변경 추가 xx

menu = ("돈까스", "치즈돈까스") print(menu[0]) #돈까스 print(menu[1]) #치즈돈까스 (name, age, hobby) = ("김종국", 20, "코딩") print(name, age, hobby) #김종국 20 코딩

세트(집합)

중복 xx, 순서 xx

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("김태호") #{'박명수', '김태호', '유재석'} # java를 까먹음 java.remove("김태호") #{'양세형', '유재석'}

자료구조의 변경

menu = {"커피", "우유", '쥬스'} print(menu, type(menu)) #{'커피', '우유', '쥬스'} menu = list(menu) print(menu, type(menu)) #['커피', '우유', '쥬스'] menu = tuple(menu) print(menu, type(menu)) #('우유', '커피', '쥬스') menu = set(menu) print(menu, type(menu)) #{'쥬스', '커피', '우유'}

퀴즈

당신의 학교는 대회를 주최했는데 댓글 이벤트를 진행하기로 하였습니다.

#추첨을 통해 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) #[1, 2, 3, 4, 5]

#shuffle(lst) #[1, 3, 4, 2, 5]

#print(lst)

선생님의 코드

from random import * users = range(1, 21) #1부터 20까지 숫자를 생성 users = list(users) shuffle(users) winners = sample(users, 4) #4명 중에서 1명은 치킨, 3명은 커피 print("--당첨자 발표--") print("치킨 당첨자 :{}".format(winners[0])) print("커피 당첨자 :{}".format(winners[1:])) print("--축하합니다.")

내 코드

from random import * appli = list(range(1,20)) winners = sample(appli, 4) print("--당첨자 발표--") print("치킨 당첨자 : {}".format(winners[0])) print("커피 당첨자 : {}".format(winners[1:])) print("--축하합니다.")

원래 처음에 sample로 3개를 받아오고 치킨 당첨자를 어떻게 받아오지 생각했는데 맨 처음부터 4를 받아오고 선생님처럼 할당했으면 되는 거였다.. shuffle은 계속 오류가 나서 그냥 뺐는데 구동이 잘 됐다.

저 shuffle은 도대체 왜 있는 건지 모르겠다. 없어도 구동이 잘되는 데 도대체 왜 있는 것인가.. sample이라는 좋은 함수를 알았다 리스트에서 원하는 개수의 값을 가져올 수 있다… 그리고 출력할 때는 format으로 그 수를 가져오기! 또 list를 선언할 때 list(range(범위 값))하면 손쉽게 list를 만들 수 있다는 것을 알아냈다!(구글링의 힘..) 다만 숫자일 때 가능할 것 같다.. print 할 때 format함수 써야지..

from http://everysmallstep.tistory.com/42 by ccl(A) rewrite - 2021-12-07 00:27:17