Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 책프협
- 딥러닝
- 한빛미디어
- 비전시스템을위한딥러닝
- 텐서플로라이트
- 웹최적화
- 그로스 마케팅
- 혼공단
- 머신러닝을 활용한 웹 최적화
- 파이토치
- 나는리뷰어다
- tensorflow_lite
- 플러터생존코딩
- 리눅스
- javascripteverywhere
- 리액트네이티브
- 마이크로서비스
- LEAN AI
- WSL2
- 사용자유치
- 혼공파
- 오준석
- 처음시작하는_셸_스크립트
- 처음만나는WSL
- 셸스크립트
- 처음 배우는 리액트 네이티브
- 자바스크립트는모든곳에존재한다
- 이벤트기반
- 테라폼
- 소문난명강의
Archives
- Today
- Total
부산사는신씨
혼공파 3주차 본문
목표
- 리스트, 딕셔너리, 범위 자료형에 대해 이해하기미션
- 리스트, 딕셔너리, 범위 자료형에 대해 이해한 내용을 바탕으로 포스팅
- 157쪽 1번 문제의 답 쓰고 인증샷
4장
1. 리스트
1.1 리스트란?
- 사전적인 의미는 '목록'
- 여러가지 자료를 저장 할 수 있는 자료
- javascript에서의 Array와 비슷함.
>>> array = [100, 200, "문자열", True] >>> print(array) [100, 200, "문자열", True]
1.2 리스트의 접근
-
인덱스는 0부터 시작 함.
>>> array = [100, 200, "문자열", True] >>> print(array[0]) 100 # 역순으로도 접근 가능 함. >>> print(array[-1]) True >>> print(array[-2]) "문자열" # 문자열의 경우는 2차 배열 형태로도 접근 가능 함. >>> print(array[-2][0]) "문" # 2차 배열 형태의 리스트도 가능 함. >>> array2 = [[1,2,3], [4,5,6], [7,8,9]] >>> print(array2[0][0]) 1 # IndexError 발생 >>> print(array2[3])
1.3 리스트의 연산
- 연결(+)
>>> list_a = [1,2,3] >>> list_b = [4,5,6] >>> print(list_a + list_b) [1,2,3,4,5,6]
- 반복(*)
>>> list_a = [1,2,3] >>> print(list_a * 3) [1,2,3,1,2,3,1,2,3]
- len으로 요소의 개수를 출력 할 수 있음.
1.4 리스트의 함수
- append
- 리스트에 요소를 '뒤에서부터' 추가 할 수 있음.
- 리스트.append(요소)
>>> list_a = [1,2,3] >>> list_a.append(4) >>> print(list_a) [1,2,3,4]
- insert
- 리스트에 요소를 '원하는 위치에' 추가 할 수 있음.
- 리스트.insert(위치, 요소)
>>> list_a = [1,2,3] >>> list_a.insert(0,4) >>> print(list_a) [4,1,2,3]
- extend
- 리스트를 다른 리스트와 합칠 수 있음.
- 아마도 새로운 주소 영역에 값을 새로 생성하고 주소값을 바꿔치기 하는 방식인듯함.
- append와 다른점은 같은 레벨의 요소는 merge함.
>>> list_a = [1,2,3] >>> list_a.extend([4,5,6]) >>> print(list_a) [4,1,2,3] # append는 아래와 같이 작동 함. >>> list_a = [1,2,3] >>> list_a.append([4,5,6]) >>> print(list_a) [1,2,3,[4,5,6]]
- pop
- 원하는 위치의 요소를 제거 할 수 있음
- 리스트.pop()만 실행 하면 제일 마지막부터 제거함.
- del 리스트[인덱스]와 같이 del 키워드로도 제거 할 수 있음.
- del 키워드는 del 리스트[인덱스시작범위:인덱스끝범위]처럼 범위지정으로 삭제도 가능 함
>>> list_a = [1,2,3] >>> list_a.pop(0) >>> print(list_a) [2,3] >>> list_b = [1,2,3] >>> del list_b[0] >>> print(list_b) [2,3]
- remove
- 리스트에서 원하는 값을 찾아서 제거 할 수 있음.
- pop이나 del과 달리 값으로 제거 가능 함.
>>> list_a = ["일","이","삼"] >>> list_a.remove("이") >>> print(list_a) ["일","삼"]
- clear
- 리스트를 모두 제거 할 수 있음.
- 리스트 자체가 제거 되는것이 아니라 리스트의 요소들만 사라짐.
>>> list_a = ["일","이","삼"] >>> list_a.clear() >>> print(list_a) []
- in / not in
- 리스트에 찾는 값이 있는지 없는지 확인 할 수 있음.
>>> list_a = [1,2,3,4,5,6] >>> 1 in list_a True >>> 100 in list_a False >>> 100 not in list_a True >>> 1 not in list_a False
- 리스트에 찾는 값이 있는지 없는지 확인 할 수 있음.
1.5 리스트 순회
- for 반복문의 기본 형태
for 반복자 in 리스트: 코드
list_a = [1,2,3,4,5] for list in list_a: print(list) # 실행결과 1 2 3 4 5
2. 딕셔너리
2.1 딕셔너리란?
- key: value 기반으로 데이터를 컨트롤 할 수 있음.
- javascript의 object와 비슷함.
- key로 문자열, 숫자 ,bool을 선언 할 수 있음.
- key는 당연하게 중복으로 사용 할 수 없음
2.2 선언과 접근
- javascript처럼 {}로 선언 하고 콤마(,)로 요소를 연결 함.
# 선언 변수 = { 키: 값, 키: 값, ... 키: 값 } #접근 변수[키]
>>> dic_a = { "director": ["안소니", "조 루소"], "cast": ["아이언맨", "타노스", "헐크"] } >>> dic_a {"director": ["안소니", "조 루소"],"cast": ["아이언맨", "타노스", "헐크"]} >>>dic_a["director"] ["안소니", "조 루소"]
- 자주 발생 되는 실수
# director, cast를 변수로 인식을 하여 오류 발생 함. >>> dic_a = { director: ["안소니", "조 루소"], cast: ["아이언맨", "타노스", "헐크"] } NameError: name 'director' is not defined >>> director = "감독" >>> cast = "배우" >>> dic_a = { director: ["안소니", "조 루소"], cast: ["아이언맨", "타노스", "헐크"] } >>> dic_a {"감독": ["안소니", "조 루소"],"배우": ["아이언맨", "타노스", "헐크"]} >>>dic_a["감독"] ["안소니", "조 루소"]
2.3 딕셔너리의 데이터 컨트롤
-
값 추가 / 제거
>>> dic_a = { "name": "7D 건조 망고", "type": "당절임", "ingredient": ["망고","설탕"], "origin": "필리핀" } # 새로운 키/값 추가 >>> dic_a["price"] = 5000 >>> print(dic_a) {'name': '7D 건조 망고', 'type': '당절임', 'ingredient': ['망고', '설탕'], 'origin': '필리핀', 'price': 5000} >>> del dic_a["ingredient"] >>> print(dic_a) {'name': '7D 건조 망고', 'type': '당절임', 'origin': '필리핀', 'price': 5000}
-
in 키워드
-
존재 하지 않는 키에 접근 하기전 키가 있는지 확인 할 때 사용 할 수 있는 방법중 하나.
-
리스트처럼 딕셔너리 내부에 키가 있는지 확인 할 수 있음.
dic_a = { "name": "7D 건조 망고", "type": "당절임", "ingredient": ["망고","설탕"], "origin": "필리핀" } key_name = "name" if key_name in dic_a: print(dic_a[key_name]) else: print("키가 없습니다.") # 결과값 "7D 건조 망고"
-
-
get() 함수
-
존재 하지않는 키를 딕셔너리[키]와 같이 접근 했을 때 KeyError가 발생 되지만 get() 했을 경우 KeyError가 아닌 None을 리턴 함.
dic_a = { "name": "7D 건조 망고", "type": "당절임", "ingredient": ["망고","설탕"], "origin": "필리핀" } value = dic_a.get("존재하지 않는 키") print(value); # 결과값 None # 아래와 같이 사용 할 수 있음. if value == None: print("키 없음.")
-
2.4 딕셔너리 데이터 순회
-
리스트와 다르게 키 변수에 키값이 들어감.
dic_a = { "name": "7D 건조 망고", "type": "당절임", "ingredient": ["망고","설탕"], "origin": "필리핀" } for key in dic_a: print(key, ":", dic_a[key]) # 결과값 name : 7D 건조 망고 type : 당절임 ingredient : ["망고","설탕"] origin : 필리핀
3. 범위 자료형
- for 반복문과 함께 많이 사용 되는 자료형
- 특정 횟수만큼 반복하고 싶을 때 for 반복문과 범위를 조합하여 사용 함.
3.1 사용 예
- 매개변수에 숫자를 1 개 넣는 방법
-
range(A) ==> A는 숫자
a = range(5) print(a) print(list(a)) # 결과값 range(0,5) [0,1,2,3,4]
-
- 매개변수에 숫자를 2 개 넣는 방법
-
range(A,B) ==> A, B는 숫자
a = range(5,10) print(a) print(list(a)) # 결과값 range(5,10) [5,6,7,8,9]
-
- 매개변수에 숫자를 3 개 넣는 방법
- range(A,B,C) ==> A,B,C는 숫자
- A부터 B까지 C씩 증가 하는 정수 범위가 만들어짐.
a = range(0,10,2) print(list(a)) # 결과값 [0,2,4,6,8]
3.2 데이터 순회
-
매개변수 1개
for i in range(5): print(str(i) + "= 반복변수") # 결과값 0 = 반복변수 1 = 반복변수 2 = 반복변수 3 = 반복변수 4 = 반복변수
-
매개변수 2개
for i in range(5,10): print(str(i) + "= 반복변수") # 결과값 5 = 반복변수 6 = 반복변수 7 = 반복변수 8 = 반복변수 9 = 반복변수
-
매개변수 3개
for i in range(0,10,3): print(str(i) + "= 반복변수") # 결과값 0 = 반복변수 3 = 반복변수 6 = 반복변수 9 = 반복변수
-
리스트의 range 순회
list_a = [1,2,3,4,5] # 리스트 길이를 범위로 지정함. for i in range(len(list_a)): print("{}번째 반복: {}".format(i, array[i])) # 결과값 0번째 반복: 1 1번째 반복: 2 2번째 반복: 3 3번째 반복: 4 4번째 반복: 5
-
역 반복문
list_a = [1,2,3,4,5] # 리스트 길이를 범위로 지정함. for i in reversed(range(len(list_a))): print("{}번째 반복: {}".format(i, array[i])) # 결과값 4번째 반복: 5 3번째 반복: 4 2번째 반복: 3 1번째 반복: 2 0번째 반복: 1
연습문제
- 함수 하나씩 실행 했을 때
- 문제의 함수를 연결 해서 실행 했을 때
Comments