리스트는 리스트끼리 합치는 것이 가능하고, 리스트를 추가할 수 있다.
그러나 리스트 이것을 한다고 해서 원본 데이터가 수정되는 것은 아니다.
즉, 원본 데이터를 수정할 수 없다는 말과 같다.
list1 = [1,2,3]
list2 = [4,5,6]
list1 + list2 # 나중에 자동으로 사라진다. (extend와 동일)
리스트는 in 과 not in을 사용해 True, False 나타낼 수 있다.
예를 들면 다음과 같다.
list1 == [1,2,3] # 각 인덱스 위치에 맞는 요소의 값을 검사한다.
=> True
is 연산자와 is not 연산자
이것은 주로 같은 객체인지 아닌지를 검사하는 것으로 어떠한 연산결과로 나온 변수의 값이 True인지 Fasle인지와
None값을 체크할 때 주로 is 와 is not 연산자를 사용한다.
lst = [1,2,3]
lst is [1,2,3]
=> False
들어가기전 [ ], ( ), { }에 대하여 내가 정리를 해놓은 것이 있다.
이것을 참고한 후 글을 읽으시면 이해하기 쉬울 것이다.
Tuple이란?
- Sequence 자료형
- Immutable 자료형 (수정 X)
- 중복데이터 저장 가능
- ( ) 를 활용해서 만들 수 있다. (소괄호 생략 가능)
tuples = "h","e","l","l","o"
tuples
=> ('h','e','l','l','o')
튜플은 주로 프로그램이 실행되는 동안 튜플은 안에 있는 요소들이 변경이 일어나면 안되는 경우 사용되고,
리스트보다 메모리를 적게 차지하여 속도가 더 빠르다는 특징이 있다.
Set이란?
- Non-Sequence 자료형
- 데이터의 저장의 순서를 보장하지 않는다.
- 인덱싱과 슬라이싱 지원하지 않는다.
- mutable 자료형
- 중요한 특징으로 중복 데이터 저장 허용 X
- { } 중괄호를 이용해서 만들 수 있다.
sets = {1001,1001,1001,1001,1001,1004,1004,1004,1004,11,22,44,56,100}
sets
=> {11, 22, 44, 56, 100, 1001, 1004}
set은 순서를 보장하지 않기 때문에 set[0]과 같이 인덱스를 호출하면 오류가 뜬다.
더하거나 곱하기 연산자는 의미가 없기 때문에 지원을 안한다.
그러나 in 연산자와 not in 연산자는 지원된다.
set객체의 메소드 종류
- 교집합
A = {1,2,3}
B = {2,3,4}
A,B
A.intersection(B) # 교집합
=> {2, 3}
- 합집합
A.union(B) # 합집합
=> {1, 2, 3, 4}
- 차집합
A.difference(B) # 차집합
=> {1}
- 값을 추가할 때
a = {1,2,3}
a.add(100) # 하나의 값을 추가하고 싶을 때
a
=> {1, 2, 3, 100}
- 여러 값을 추가할 때
a.update([1,2,3,4,5,6,7,8,9,10,100]) # 여러값을 추가하고 싶을 때 (중복값은 안된다.)
a
=> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100}
- 특정 값을 제거할 때
a.remove(100) # 특정 값을 제거하고 싶을 때
a
=> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
dict (Dictionary)이란?
- Non-Sequence 자료형
- mutable 자료형
- key-value 구조로 되어있다.
- key 중복 X
- value 중복 O
- 딕셔너리의 구조
city = { # set,list,tuple도 이런 형식으로 작성할 수 있지만 하지 않음
"한국" : "부산",
"일본" : "교토",
"캐나다" : "오타와"
}
city
dict 의 값을 가져올 때는 key 값을 활용한다. 그리고 없는 key를 가져오라하면 에러가 발생한다.
city["한국"]
=> '부산'
- get 이용
city.get("중국","없음")
# 중국이라는 키가 없을경우 없음이라는 문자열로 반환해라 (에러가 안난다.)
- 딕셔너리 value 추가
city["중국"] = "베이징" # 중국 key가 없으니 key와 value 가 추가된다.
city
=> {'미국': '워싱턴', '중국': '베이징', '캐나다': '오타와', '한국': '부산'}
- 딕셔너리 value 수정
city["일본"] = "도꾜" # key가 있어서 해당 key 에 해당되는 value가 수정된다.
city
=> {'미국': '워싱턴', '일본': '도꾜', '중국': '상하이', '캐나다': '오타와', '한국': '부산'}
- 딕셔너리 업데이트
add_city = {"중국" : "상하이", "미국" : "워싱턴"}
city.update(add_city) # update 함수는 여러개의 key와 value 를 수정하거나 추가하고 싶을 때 사용
city
=> {'미국': '워싱턴', '중국': '상하이', '캐나다': '오타와', '한국': '부산'}
- 딕셔너리 삭제
del city["일본"] # key 가 "일본" 인 key와 value 쌍을 삭제하겠다.
city
=> {'미국': '워싱턴', '중국': '상하이', '캐나다': '오타와', '한국': '부산'}
- 딕셔너리 pop
print(city.pop("중국"))
# 삭제를 하고자하는 key를 넣어서 삭제할 수 있다. 해당 key의 value가 반환된다.
city
=> 상하이
{'미국': '워싱턴', '캐나다': '오타와', '한국': '부산'}
- 딕셔너리 보기 방식
딕셔너리는 내가 어떻게 나누냐에 따라서 데이터를 분류할 수 있다.
예시는 다음과 같다.
city.keys() # dict 내의 전체 키를 확인 할 수 있다.
=> dict_keys(['한국', '캐나다', '미국'])
city.values() # dict 내의 전체 value 를 확인할 수 있다.
dict_values(['부산', '오타와', '워싱턴'])
city.items() # dict 내의 전체 key, value 를 확인할 수 있다.
dict_items([('한국', '부산'), ('캐나다', '오타와'), ('미국', '워싱턴')])
"한국" in city.keys() # 내 생각 => city in ["한국"] city가 한국안에 있냐는 뜻!
마지막 줄 코딩에서 헷갈렸던 것이 있다.
나는 in 함수 뒤에 값이 들어가는 줄 알았는데 그게 아니였었다.
그리고 딕셔너리에서 True를 넣어도 성립이 되는지 궁금해 넣어보았더니 성립이 되어 신기하였다.
컬렉션 자료형 변환
컬렉션 자료형 변환은 list에서 tuple로 tuple에서 set으로 set에서 dict로 서로 변환하는 것이다.
이것을 잘 사용하면 많은 데이터를 처리하는데 수월해질 것 같다.
예를 들어 내가 튜플에서 중복된 데이터를 제거하고 싶으면 set 함수를 이용하여 중복된 데이터 제거한 후
dict형태로 바꿔 데이터를 가공시킬 수 있는 것이다.
강사님이 문제를 하나 내주셨는데 처음으로 제출하지 못했다.
그 문제는 mean의 키를 avg로 변경하는 것이었다.
mean_dict = {
"mean" : 80,
"std" : 3.5,
}
mean_dict
나는 처음에 mean_dict.pop("mean")을 이용해서 mean을 없앤 후 update를 통해 값을 넣었다.
그러나 강사님의 풀이를 보고, 나는 아직 부족하다고 느껴졌다.
mean_dict["avg"] = mean_dict.pop("mean")
mean_dict
=> {'avg': 80, 'std': 3.5}
정답은 위와 같았고, 너무나도 간단했었다. 코딩이라는 것이 정말 간단해야 좋은 코딩이라는 것을 느끼게 되었다.
'AI 공부 > 파이썬' 카테고리의 다른 글
파이썬 (제어문 = 조건문, 반복문....) - 1 (0) | 2022.07.25 |
---|---|
파이썬 (문자열) (0) | 2022.07.22 |
[ 배열 ], ( 튜플 ), { 딕셔너리 }의 차이점과 사용법 (0) | 2022.07.22 |
파이썬 (함수와 메소드) (0) | 2022.07.21 |
파이썬 (값, 변수 그리고 키워드) (0) | 2022.07.21 |
댓글