zip함수는 개수가 맞지 않는 경우 더 작은 쪽으로 맞춰 만들게 된다.(남는 부분은 삭제)
del 키워드를 통해 key-value pair를 삭제할 수 있다. (dict와 잘 어울리는 삭제명령어라고 하심)
len() 동일하게 함수를 통해 길이를 구할 수 있다.
#dictionary 생성방식.
empty_dict = {} #또는
empty_dict = dict()# dict()함수로 비어있는 딕셔너리 만들 수 있음.
print(empty_dict)
dict_a = dict(key = 1, key2=2, key3=3) # 이렇게 만들면 key는 문자열로 들어간다.
print(dict_a)
dict_b = dict([(1,"first"),(2,"second")]) # 이렇게 만들수도 있다.
print(dict_b)
dict_c = dict(zip([1,2,3,4,5],["first","second","third"])) #5까지 썼지만 3까지만 만들어짐.
print(dict_c)
dict_c[3] = "last_third" #key로 접근하여 값 변경이 가능하다.
print(dict_c)
dict_c[4] = "new four"#새로운 값 추가하기
print(dict_c)
print(1 in dict_c) # key값이 존재하는지는 찾을 수 있다. value는 이걸로 안됨.
print(len(dict_c))
#dictionary 연습1
fruit = input("과일 이름을 입력하세요. ")
fruit_dict = dict(사과 = 1000, 바나나 = 700 , 오렌지 = 1500 , 파인애플 = 2000)
if fruit in fruit_dict:
print("{}의 가격은 {}원입니다.".format(fruit,fruit_dict[fruit]))
lst_compre = [i for i in range(10)]print(lst_compre)
#list comprehension 예제
prac_result = [i**2 for i in range(1,10)]
print(type(prac_result))
print(prac_result)
# for문 예제
votes = [2,5,3,4,1,5,1,5,5,3]
candidates = ['','전정국','김남준','박지민','정호석','김태형']
candidates_votes = [0]*(len(candidates))
for i in votes:
candidates_votes[i] +=1
winner = candidates_votes.index(max(candidates_votes))
print("{}후보가 총 {}표를 얻어 당선되었습니다.".format(candidates[winner],candidates_votes[winner]))
tuple
튜플은 immutable 하다.
그래서 조회하는 함수인 count(), index() 함수만 존재한다.
튜플 comprehension은 되긴 하는데 사실 튜플이 아니라 generator comprehension이 된다
튜플 형으로 변환하려면 tuple()로 감싸줘야한다.
generator_variable = (i for i in range(10)) # iterable한 객체임.
tuple_variable = tuple(i for i in range(10))
print(type(generator_variable),type(tuple_variable))
while True:
first, second = map(int,input("정수 두 개 입력하세요: ").split())
if first>20 or first<1:
print("첫번째 값의 범위는 1~20 입니다.")
elif second >30 or second<10:
print("두번째 값의 범위는 10~30 입니다.")
elif first>= second:
print("첫 번째 입력 값은 두 번째 입력 값보다 작게 입력하세요.")
else:
break
lst_one = [2**i for i in range(first,second+1) if i != first+1 and i != second-1]
print(lst_one)
total=0
for i in range(1,101):
if i %10 == 1 : print("")
if i %2 == 0:
total+= i**2
print("+",i**2,end=" ")
else :
total-= i**2
print("-",i**2,end=" ")
print("\\n=",total,"입니다")
random 라이브러리
파이썬 표준 라이브러리 = 파이썬 기본 설치된 모듈과 패키지, 내장 함수를 묶은 놈들.
random.randint(시작 정수, 끝 정수) 함수를 사용하여 시작 정수부터 끝 정수(포함)까지 범위의 난수를 생성한다.
import random
random_list = [ random.randint(1,4) for _ in range(10)]
print(random_list)
#random 예제
import random
n = int(input("로또 번호 몇 개 드릴까요? "))
for i in range(n):
lotto_list = set()
while len(lotto_list) != 6:
lotto_list.add(random.randint(1,45))
print(lotto_list)
set 자료형
set 자료형은 중복을 허용하지 않는 자료형이다.
set()로 선언 가능하다 {}로 선언하면 dict가 되므로 주의
순서가 상관없다.
set comprehension이 가능하다.
set_variable = {extression for 변수 in iterable if 조건식}으로 사용 가능, dict는 comprehension이 없음. 그래서 되나 봄
set은 add()를 통해 한 번에 하나의 값만 넣을 수 있다. (순서가 상관없기에 뒤에 추가되고 그런 건 아님)
remove(요소) 함수를 사용해 값을 삭제할 수 있다.- 없는 값 삭제할 때는 KeyError발생.
discard(요소) 함수를 사용해 값을 삭제할 수 있다. 없는 값을 삭제할 때도 에러가 발생하지 않는 방식이다.(에러처리를 해준다)
pop() 순서를 보장하지 않고 반환한 뒤 지운다 (뭐가 지워질 것인지 알 수 없음) (출력해 봤을 때 앞에서부터 출력하는 듯)
clear() 함수로 요소 전체 삭제 가능.
len() 길이 출력
set자료형 끼리 set.union(seta, setb) , | 로 합집합이 가능하다.
& 와 set.intersection(seta, setb)로 교집합이 가능하다.
와 set.difference(seta, setb)로 차집합도 가능하다.
^ 와 set.symmetric_difference(set_a, set_b)로 A의 대칭차집합을 구할 수 있다() = 합집합 - 교집합 한 결과임.
|= 와 set_a.update(set_b)로 합집합을 한 결과를 앞 set_a에 넣어준다.
&= 와 set_a.intersection_update(set_b)로 교집합 한 결과를 set_a에 넣어준다.
=와 set_a.difference_update(set_b)로 A-B의 값을 넣어준다.
^= 와 set_a.symmetric_difference_update(set_b)로 set_a에 대칭차집합 값을 넣어준다.
a.issubset(b)를 통해 a가 b의 부분집합인지 물어봐 True False를 출력한다.
a.issuperset(b)를 통해 a가 b의 상위집합인지 물어봐 True False를 출력한다.
a> b b <a로 둘이 같을 경우에는 False가 출력되고 한쪽이 다른 한쪽을 포함하는 진부분집합 관계여야 True출력한다.
==로 set가 같은지 비교 가능하다.
a.isdisjoint(b) 겹치는 부분이 없냐를 확인하는 함수 없으면 True 있으면 False
set_3 = {i for i in range(1,100) if i%3==0 }
set_5 = {i for i in range(1,100) if i%5==0 }
result_set = set.intersection(set_3,set_5)
print(result_set)
role_admin ={i for i in ["회계 관리", "인사 관리","구매 관리","시스템 관리"]}
role_hr = {i for i in ["인사 관리","개인정보 조회","회계 관리","근태 관리"]}
role_user = {i for i in ["개인정보 조회","근태 관리"]}
result = list(set.union(role_admin, role_hr, role_user))
result.sort()
print(result)
print("2부터 입력하신 수까지의 모든 소수를 찾는 프로그램입니다.")
N = int(input("찾는 범위를 입력하세요:"))
for i in range(2,N+1):
Flag = True
for j in range(2,i//2+1):
if i%j == 0 :
Flag = False
if Flag == True:
print(i,end=" ")