TIL#6 PYTHON 기초(3)

Dasom·2020년 7월 19일
0

python

목록 보기
3/50
post-thumbnail

사전스터디 개인과제인 예제풀기 10문제를 하면서 느낀점은 다른 사람들보다 나의 공부 속도가 느리고 지식이 부족하다는 점이었다. 10문제를 다 풀어가는 분들도 있는데 나는 이제 고작 4문제를 풀었을 뿐이었다. 일일히 구글링하면 답을 다 찾을 수 있겠지만 기본문법들로 만든 예제인 만큼 내가 공부한 것들로 풀어보고 싶었다. 그래서 다른 사람들의 속도를 보고 조급해하지 않고 나의 속도에 맞춰서 차근차근 해보기로 마음먹었다. 괜히 조급해하다가 다 망쳐버리는 건 아닌지 걱정도 되었고 내가 할 수 있을까 고민도 계속 되는 것은 사실이지만 이왕 시작한 거 꾸준히 차근차근 잘해봐야겠다. 일단 나의 첫번째 목표는 매일 매일 꾸준히 공부한 것들을 블로그로 정리하는 것이다.

오늘 공부한 것들에 대해서도 포스팅하려 한다.

리스트 자료형

리스트를 사용하면 1,2,3,4,5,6,7 같은 숫자 모음을 간단하게 표현할 수 있다. 리스트는 대괄호 [ ] 로 감싸주고 각 요소값은 쉼표(,)로 구분해준다.

리스트명 = [ 요소1, 요소2, 요소3, ... ]

리스트는 아무것도 포함하지 않는 비어있는 리스트일 수도 있고 숫자, 문자열을 요소값으로 가질 수 있다. 또한 숫자나 문자열을 함께 요소값으로 가질 수도 있고 리스트 안에 리스트를 요소값으로 가질수도 있다.

a = []
a = [1, 2, 3]
a = ['apple', 'banana', 'grape']
a = [1, 2, 'apple', 'strawberry']
a = [1, 2, ['lemon', 'mango']]

이처럼 리스트 안에는 어떠한 자료형도 포함시킬 수 있다.

리스트의 인덱싱과 슬라이싱

인덱싱(indexing)은 '가리킨다'는 의미이다.

a = [1, 2, 3, 4] 라는 리스트가 있다고 하자. 파이썬은 0부터 센다는 것을 잊으면 안 된다.
a[0]은 리스트 a 의 첫 번째 요소값을 말한다.
따라서 a[0]은 1을 가리킨다. a[3] 은 4를 가리킨다.

a = [1, 2, 3, ['a', 'b', 'c']]

위와 같은 리스트 a가 있다. 이 리스트에서 a[1]은 2를 가리키며 a[3]은 마지막 요소값인 ['a', 'b', 'c'] 를 가리킨다. 리스트 a에 포함된 ['a', 'b', 'c'] 리스트에서 'a' 값을 인덱싱을 사용해 꺼내려고 한다면 a[3][0] 을 실행하면 된다. a리스트의 3번째 요소값의 1번째 요소값이라는 의미가 된다.

슬라이싱(slicing)은 '잘라낸다'는 의미이다.

a = [1, 2, 3, 4, 5, 6] 이라는 리스트가 있다고 했을 때, a[0:3] 을 실행한다면 a라는 리스트의 0번째 요소값부터 3-1번째 요소값까지 슬라이싱한다는 의미이다. 따라서 a[0:3] 을 실행하면 [1, 2, 3]이 나온다.
또한 a[:3]을 실행하면 처음부터 a[2]까지 슬라이싱한다는 의미이여, a[3:]을 실행하면 a[3]부터 마지막까지 슬라이싱한다는 의미이다. a[:]을 실행하면 a리스트 전체를 슬라이싱한다는 의미이다.

리스트 연산하기

리스트도 +기호를 이용해 더할 수 있고 * 기호를 이용해 반복할 수 있다.

a = [1, 2, 3]
b = [4, 5, 6]
리스트가 있을 때 a + b 를 실행하면 [1, 2, 3, 4, 5, 6] 이 된다.
a * 3 을 실행하면 [1, 2, 3, 1, 2, 3, 1, 2, 3] 이 된다.

리스트 길이를 구하기 위해서는 len함수를 사용한다.
a = [1, 2, 3] 리스트가 있을 때 len(a)를 실행하면 3이 나온다. 리스트의 길이는 즉 리스트에 있는 요소값의 개수이다.

리스트의 수정과 삭제

a = [1, 2, 3] 이라는 리스트가 있다고 가정할 때, a[2] = 5 를 실행하면 a = [1, 2, 5]로 바뀐다. a리스트의 3번째 요소인 3을 5로 수정한다는 의미이다.

리스트의 요소를 삭제하는 방법은 del 함수를 이용한다.
a = [1, 2, 3] 리스트에서 첫번째 요소값을 삭제하고 싶다면 del a[0] 을 실행하면 a = [2, 3] 이 된다.

슬라이싱 기법을 이용해 리스트의 요소 여러 개를 한꺼번에 삭제할 수도 있다.
a = [1, 2, 3, 4, 5] 리스트에서 del a[3:] 를 실행하면 [4, 5] 가 삭제되어 a = [1, 2, 3] 가 된다.

리스트 관련 함수

append
리스트의 맨 마지막에 요소를 추가하는 함수이다.

a = [1, 2, 3]
a.append(4) 를 실행하게 되면 a = [1, 2, 3, 4]가 된다.

a = [1, 2, 3]
a.append([4, 5]) 를 실행하면 a = [1, 2, 3, [4, 5]] 가 된다.

sort
리스트의 요소를 순서대로 정렬해 준다.

a = [1, 5, 2, 4, 3]
a.sort() 를 실행하면 a = [1, 2, 3, 4, 5] 가 된다.

문자도 알파벳 순서도 정렬할 수 있다.
a = ['b', 'd', 'c', 'a']
a.sort() 를 실행하면 a = ['a', 'b', 'c', 'd'] 가 된다.

reverse
리스트를 역순으로 뒤집어 준다. 순서대로 정렬해서 뒤집어 주는 게 아니라 현재 리스트를 그대로 거꾸로 뒤집는다.

a = [1, 5, 3, 2]
a.reverse() 를 실행하면 a = [2, 3, 5, 1] 가 된다.

index
index(x)함수는 리스트에 x값이 있으면 x의 위치 값을 돌려준다.

a = [1, 2, 3, 4]
a.index(4) 를 실행하면 요소4는 리스트의 4번째(a[3])이므로 3을 돌려준다.
a.index(2) 를 실행하면 요소2는 리스트의 2번째(a[1])이므로 1을 돌려준다.

a.index(0) 을 실행하면 리스트에 요소0값은 존재하지 않기 때문에 값 오류(ValueError)가 발생한다.

insert
insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수이다.

a = [1, 2, 3]
a.insert(1, 4) 를 실행하면 a = [1, 4, 2, 3]이 된다.

remove
remove(x)는 리스트에서 첫번째로 나오는 x를 삭제하는 함수이다.

a = [1, 2, 3, 1, 2, 3]
a.remove(2)를 실행하면 a = [1, 3, 1, 2, 3] 이 된다.

pop
pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.

a =[1, 2, 3]
a.pop() 을 실행하면 3을 돌려준다. 그리고 a = [1, 2]가 된다.

pop(x)는 x번째 요소를 돌려주고 그 요소는 삭제한다.

a = [1, 2, 3]
a.pop(1) 을 실행하면 2를 돌려주고 a = [1, 3]이 된다.

count
count(x)는 리스트 안에 x가 몇개 있는지 그 개수를 돌려주는 함수이다.

a = [1, 2, 3, 1, 1]
a.count(1) 을 실행하면 요소값 1이 3개가 들어있으므로 3을 돌려준다.

extend
extend(x)에서 x에는 리스트만 올 수 있다. 리스트 확장 함수이다. 원래의 리스트에 x리스트를 더하게 된다.

a = [1, 2, 3]
a.extend([4, 5] 를 실행하면 a = [1, 2, 3, 4, 5]가 된다.

튜플 자료형

튜플(tuple)은 리스트와 거의 비슷하며 몇가지 점만 다르다.

다른점

  • 리스트는 []로 둘러싸지만 튜플은 ()로 둘러싼다.
  • 리스트는 값의 생성, 삭제, 수정이 가능하지만 튜플은 값을 바꿀 수 없다.
  • 튜플은 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 한다. ex) t1 = (2, )
  • 튜플은 괄호를 생략해도 무방하다. ex) t2 = 1, 2, 3

튜플은 인덱싱, 슬라이싱, 더하기, 곱하기(반복하기), 길이구하기는 리스트와 같다.

단, 값을 추가할 때는 a = (1, 2, 3) 이라는 튜플에 값 4를 추가해서 (1, 2, 3, 4)를 만든다면 a+(4, )를 실행한다.

딕셔너리 자료형

딕셔너리(Dictionary)는 영어로 '사전'이라는 의미이다. 즉 'apple'이라는 단어에 '사과', 'subway'라는 단어에 '지하철'이라는 뜻이 부합되듯이 딕셔너리는 KeyValue를 한쌍으로 갖는 자료형이다.

딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고 Key를 통해 Value를 얻는다.

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

Tip Key값에는 변하지 않는 값을 사용하고, Value에는 변하는 값과 변하지 않는 값 모두 사용할 수 있다. 즉 Key값에 리스트는 사용할 수 없다.

딕셔너리 쌍 추가, 삭제하기

< 딕셔너리 쌍 추가하기 >

a = {1: 'a'}
a[2] = 'b' 를 실행하면 a = {1: 'a', 2: 'b'} 가 된다. [ ]안의 값이 Key가 되고 '=' 오른쪽의 값이 Value가 된다.

< 딕셔너리 쌍 삭제하기 >

del함수를 사용해서 삭제한다.

a = {1: 'a', 'name': 'sally', 3: [3, 4]}
del a['name'] 을 실행하면
a = {1: 'a', 3: [3, 4]} 가 된다.

del a[Key]처럼 지정한 Key에 해당하는 {key: value} 쌍이 삭제된다.

딕셔너리에서 key 사용해 value 얻기

score = {'eng': 80, 'math': 75, 'kor': 90}
score['eng'] 를 실행하면 key가 'eng'인 딕셔너리의 value를 반환하여 80이 반환된다.

어떤 key의 value를 얻기 위해서는 '딕셔너리 변수 이름[key]'를 사용한다.

딕셔너리 만들 때 주의사항

Key는 고유한 값이므로 중복되는 Key값을 설정하면 하나를 제외한 나머지 것들이 모두 무시된다. 동일한 Key가 존재하면 어떤 Key에 해당하는 Value를 불러야 할지 알 수 없기 때문이다.

딕셔너리 관련 함수

keys
Key 리스트 만들기 함수이다.

score = {'eng': 80, 'math': 75, 'kor': 90}
score.keys() 를 실행하면
dict_keys(['eng', 'math', 'kor']) 를 돌려준다. dict_keys 객체를 리스트로 변환하려면 list(score.keys()) 와 같이 실행하면 된다.

values
Value 리스트 만들기 함수이다. keys 함수와 같은 방법으로 실행하면 된다.

items
items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.

score = {'eng': 80, 'math': 75, 'kor': 90}
score.items() 를 실행하면
dict_items([('eng','80'), ('math', '75'), ('kor', '90')]) 과 같이 돌려준다.

clear
clear 함수는 딕셔너리 안의 모든 요소를 삭제하여 빈 딕셔너리로 만든다.

get
get(x) 함수는 x라는 Key에 대응되는 Value를 돌려준다.

score = {'eng': 80, 'math': 75, 'kor': 90}
score.get('math') 를 실행하면 '75'를 돌려준다. score['math'] 를 사용했을 때와 동일한 결과값을 돌려받는다.
다른 점은 존재하지 않는 key값을 가져오려고 할 경우 score[x] 는 오류가 발생하고 score.get(x)는 None을 돌려준다.

in
해당 Key가 딕셔너리 안에 있는지 조사하는 함수이다.

score = {'eng': 80, 'math': 75, 'kor': 90}
'math' in score 를 실행하면 'True'를 돌려주고 딕셔너리에 존재하지 않는 'computer' in score 를 실행하면 'False'를 돌려준다.

profile
개발자꿈나무🌲

0개의 댓글