Python & Django Day4
Fastcampus Python&Django 온라인 강의를 듣고 작성한 Class note입니다.
데이터 구조(Dictionary, set), tuple(list comprehension)
Tuple
immutable + 순서가 있는 자료형
(1, 2, 3, 4)
1tuple1 =(1, 2, 3, 4)
튜플을 리스트로 바꾸기 :
-
1 ~ 100까지 숫자를 포함하는 Tuple을 만드세요.
-
그 Tuple을 list로 바꾸세요.
1tuple_1_to_100 = tuple(range(1, 101))
2list_1_to_100 = list(tuple_1_to_100)
Dictionary
key, value형태의 자료형 / 순서가 보장되지 않음
{‘key1’: ‘value1’, ‘key2’: ‘value2’}
1 d = {}
2 d['name'] = 'sol'
3# {'name': 'sol'}
Dictionary 만들기
-
내 정보를(이름, 나이, 연락처) dictionary로 만들어보세요.
-
이메일 정보를 추가하세요.
-
각 정보를 대괄호와, .get메소드를 이용하여서 출력해보세요.
1info = {'name' : 'Jane', 'age':30, 'phone':'010-123-1234'}
2info['email'] = 'email@abc.com'
3info['email']
4info.get('name')
- get을 쓰면 값이 없는 경우도 에러가 나지 않고, none을 출력하게 된다.
Tuple을 Dictionary로 바꾸기
1myInfo = [('name', 'Jane'), ('age', 30), ('phone', '010-123-1234')]
2
3# 방법1
4myInfoDic = {}
5
6for el in myInfo:
7 myInfoDic[el[0]] = el[1]
8
9# 방법2
10dict(myInfo)
CSV (comma-separated values)
csv를 dictionary 형태로 바꾸기 ********
1csv_values = """
2이름, 연락처, 나이, 이메일
3철수, 010-1234-1234, 23, ch@ab.com
4영희, 010-2485-4728, 39, yh@ac.com
5"""
6
7csv_values = csv_values.strip('\n')
8# strip(): 양 끝에 괄호 안의 값이 있으면 모두 삭제해주는 메서드
9
10# string = "-----e---e---e-e--e---"
11# print(string.strip('-'))
12# e---e---e-e--e
13
14
15csv_list = csv_values.split('\n') # enter를 기준으로 값 나누어서 리스트 만듦
16print(csv_list)
17
18# ['이름, 연락처, 나이, 이메일', '철수, 010-1234-1234, 23, ch@ab.com', '영희, 010-2485-4728, 39, yh@ac.com']
19
20info = {}
21for el in csv_list:
22 print(el.split(',')) # list로 뽑아 냄
23
24 # ['이름', ' 연락처', ' 나이', ' 이메일']
25 # ['철수', ' 010-1234-1234', ' 23', ' ch@ab.com']
26 # ['영희', ' 010-2485-4728', ' 39', ' yh@ac.com']
27
28#-------------------------------------------------
29keys = []
30for el in csv_list[0].split(','):
31 keys.append(el.strip(' '))
32
33print(keys) # ['이름', '연락처', '나이', '이메일']
34
35#-------------------------------------------------
36results = []
37for val in csv_list[1:]:
38 result_dict = {}
39 i = 0
40 for el in val.split(','):
41 result_dict[keys[i]] = el.strip(' ')
42 i += 1
43 results.append(result_dict)
44
45# [{'이메일': 'ch@ab.com', '이름': '철수', '나이': '23', '연락처': '010-1234-1234'}, {'이메일': 'yh@ac.com', '이름': '영희', '나이': '39', '연락처': '010-2485-4728'}]
Set
1# 빈 set 만들기
2set1 = set()
3
4# set에 값 추가하기
5set1.add(3)
6set1.add(4)
7
8# 합집합
9set1.union(set2)
10
11# set1만 갖고 있는 원소
12set1.difference(set2)
1# set1 변수에 1 ~ 100까지 숫자 중 3, 5, 15의 배수
2
3set1, set2, set3 = set(), set(), set()
4
5for i in range(1, 101):
6 if i % 15 == 0:
7 set3.add(i)
8 elif i % 5 == 0:
9 set2.add(i)
10 elif i % 3 == 0:
11 set1.add(i)
12
13print("3의 배수 : ", set1)
14print("5의 배수 : ", set2)
15print("15의 배수 : ", set3)
16
17
18# 3의 배수 : {3, 6, 9, 12, 18, 21, 24, 27, 33, 36, 39, 42, 48, 51, 54, 57, 63, 66, 69, 72, 78, 81, 84, 87, 93, 96, 99}
19# 5의 배수 : {65, 35, 100, 5, 70, 40, 10, 80, 50, 20, 85, 55, 25, 95}
20# 15의 배수 : {75, 45, 15, 90, 60, 30}
21
22
23# 두 set1, set2에서 겹치는 숫자를 출력
24print(set1.union(set2))
25 # {65, 66, 3, 69, 6, 5, 72, 9, 70, 10, 12, 78, 80, 81, 18, 84, 21, 20, 87, 24, 85, 25, 27, 93, 95, 96, 33, 99, 36, 35, 100, 39, 40, 42, 48, 50, 51, 54, 55, 57, 63}
26
27
28# set3에서 set1에 포함되지 않은 숫자를 출력
29print(set3.difference(set1))
30 # {75, 45, 15, 90, 60, 30}
Comprehensions
List Comprehension
for
1a = [i for i in range(1, 101)]
2a = [i**2 for i in range(1, 101)]
if
1a = [ i for i in range(1, 101) if i % 2 ==0]
[ [1, 2], [1, 2] ] 만들기
1#result = []
2#for i in range(1, 3):
3# el = []
4# for j in range(1, 3):
5# el.append(j)
6# result.append(el)
7
8
9result = [[x for x in range(1, 3)] for _ in range(2)]
10# 인덱스 사용 안하고 횟수만 사용했을 때 _로 표기함