이번주의 학습 범위는 기초 중의 기초인 자료형을 끝내보려고 한다.
리스트
리스트의 형태는 a = [1, 2, 3, 4]과 같다. 숫자, 문자열, 숫자 & 문자열, 리스트 자체를 요솟값으로 가진다.
# 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[-1]
['a', 'b', 'c']
>>> a[3]
['a', 'b', 'c']
# 리스트 a에 포함된 ['a', 'b', 'c'] 리스트에서 'a'값을 인덱싱한 방법
>>> a[-1][0]
'a'
# 슬라이싱
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5]
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2]
['a', 'b']
위의 예시처럼 리스트는 인덱싱과 슬라이싱이 가능하다.
뿐만 아니라 연산도 가능하다. +, *, len()을 사용할 수 있다.
단, 숫자 + 문자열은 형이 다르기에 더할 수 없기에 문자열의 형태로 바꾸어 주어야 한다. -> str() 사용
리스트 삭제는 del 함수 이용해서 리스트 요소 삭제 가능하다.
리스트 관련 함수
요소 추가: .append()
정렬: .sort() -> 리스트의 요소를 순서대로 정렬한다.
뒤집기: .reverse() -> 리스트를 그대로 거꾸로 뒤집는다.
위치 반환: .index() -> 리스트에 x 값이 있으면 x의 위치 값을 돌려준다. 존재하지 않으면 오류가 뜬다.
요소 삽입: .insert(a, b) -> a번째 위치에 b를 삽입하는 함수이다.
요소 제거: .remove(x) -> 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.
요소 끄집어내기: .pop() -> 맨 마지막 요소를 돌려주고 해당 요소를 삭제한다. / .pop(x)는 x번째 요소를 돌려주고 삭제한다.
개수 세기: .count() -> 요소 x의 개수를 세고, 돌려주는 함수이다.
확장: .extend(x) -> x에는 리스트만 가능하며, 원래의 리스트에 리스트를 더하게 된다.
튜플
리스트와 유사하며, 차이점은 다음과 같다.
리스트는 [], 튜플은 () 사용 / 리스트는 값의 생성, 삭제, 수정이 가능하지만 튜플은 값을 바꿀 수 없다.
1개의 요소를 가질 때에는 요소 뒤에 (,)를 반드시 붙여야 하며, 괄호()를 생략해도 무방하다.
-> 값을 삭제하거나 변경하려고 할 때에는 오류가 발생한다는 점 기억하기
인덱싱, 슬라이싱, 더하기(+), 곱하기_반복(*), 길이 구하기 len()은 가능하다.
딕셔너리
대응 관계를 나타내는 자료형이다. Key를 통해 Value를 얻는다.
형태는 dic = {'name' : 'min', 'phone' : '01012345678'} 이며, Key는 'name', 'phone' 이고, 해당하는 Value는 'min', '01012345678'이 된다.
# 쌍 추가하기
>>> a = {1: 'a'}
>>> a['name'] = 'min'
{1: 'a', 'name': 'min'}
# 리스트도 추가 가능하다.
# 요소 삭제
>>> del a[1]
>>> a
{'name': 'min'}
# Key에 해당하는 {key: value} 쌍이 삭제된다.
딕셔너리 만들 때의 주의할 사항은 Key값은 고유한 값이므로 설정해 놓으면 나머지는 무시된다.
동일한 Key가 존재할 경우 다른 쌍은 무시된다.
또, Key에는 변할 수 없는 값만 지정할 수 있다. 따라서 수정이 가능한 리스트 []는 딕셔너리로 사용할 수 없다.
딕셔너리 관련 함수
Key 리스트 만들기: .keys() -> dict_keys([])로 객체를 돌려준다.
-> 리스트 고유의 함수는 사용할 수 없다. 변환하려면 list(a.keys())를 사용한다.
Value 리스트 만들기: .values() -> dict_values([])로 객체를 돌려준다.
Key, Value 쌍 얻기: .items() -> Key와 Value의 쌍을 튜플로 묶은 값을 객체로 돌려준다.
Key: Value 쌍 모두 지우기: .clear() -> 딕셔너리 안의 모든 요소를 삭제한다. { }로 표현된다.
# Key로 Value 얻기(get)
>>> a = {'name': 'min', 'phone': '01012345678'}
>>> print(a.get('birth'))
None
>>> print(a['birth'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'birth'
# get함수와는 다르게 Key 오류를 발생한다.
# 해당 Key가 딕셔너리 안에 있는지 조사하기(in)
>>> a = {'name': 'min', 'phone': '01012345678'}
>>> 'name' in a
True
>>> 'email' in a
False
집합
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}
집합의 형태는 set 키워드를 사용해 s1 = set() 이런 형태로 사용할 수 있다.
리스트를 입력하거나 문자열을 입력하여 만들 수 있다.
집합의 특징은 1) 중복을 허용 하지 않는다. 2) 순서가 없다. -> 중복을 제거하기 위한 필터 역할로 종종 사용되기도 한다.
set 자료형에 저장된 값을 인덱싱하려면 리스트 or 튜플로 변환한 후 해야 한다.
교집합, 합집합, 차집합 구하기
>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])
# 교집합
>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2)
{4, 5, 6}
# 합집합
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# 차집합
>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}
집합 관련 함수
값 1개 추가하기: .add()
값 여러 개 추가하기: .update()
특정 값 제거하기: .remove()
불
참(True)과 거짓(False)을 나타내는 자료형이다. 2가지의 값만 가질 수 있다. 첫 문자는 항상 대문자로 사용해야 한다.
자료형의 참과 거짓
값 | 참 or 거짓 |
"python" | 참 |
"" | 거짓 |
[1, 2, 3] | 참 |
[] | 거짓 |
() | 거짓 |
{} | 거짓 |
1 | 참 |
0 | 거짓 |
None | 거짓 |
bool() 내장 함수를 사용하면 참과 거짓을 식별할 수 있다.
변수
변수를 만들 때는 변수 이름 = 변수에 저장할 값 형태로 만든다.
리스트 복사하고자 할 때
>>> a = [1, 2, 3]
>>> b = a
>>> a is b
True
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]
# 동일한 리스트를 가리키고 있기에 똑같이 바뀌었다는 걸 알 수 있다.
# b 변수를 생성할 때, a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만드는 방법
# [:] 이용
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
# copy 모듈 이용
>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)
>>> b is a
False
출처: 점프 투 파이썬
'ETC > Green Swan, Python 기초' 카테고리의 다른 글
4주차_함수, 입력과 출력, 파일 읽고 쓰기 (2) | 2022.11.17 |
---|---|
3주차_if문, while문, for문 (0) | 2022.11.09 |
1주차_과제 (0) | 2022.11.02 |
1주차_숫자형, 문자열 자료형 (0) | 2022.11.02 |