리스트
- 리스트는 여러 개의 원소를 저장하는 자료형으로 container라고 부르며, 저장된 값을 변경할 수 있는 (mutable) 특징을 가지고 있다. 리스트에 저장된 값들에는 순서가 존재하며 (sequential), 리스트는 대괄호를 이용해서 생성하고, 쉼표를 이용해서 구분한다.
my_list = [1, 2, 3, 4, 5]
- 리스트는 다른 프로그래밍 언어와 차이가 있는데, 보통 리스트와 유사한 "배열"이라는 구조는 같은 데이터 형식의 값만 저장할 수 있다는 제한이 있지만, 리스트는 다른 데이터 형의 값도 함께 저장할 수 있다. (즉, 문자형/논리형/숫자형 혼합하여 리스트 구성 가능)
- 리스트의 하나하나의 원소에 접근하기 위해서는 인덱스를 활용하는데, 0부터 n-1까지의 인덱스를 사용할 수 있다.
my_mixed_list = [1, "Hello", True, 3.14]
print(my_mixed_list[0])
print(my_mixed_list[3])
- 또한 파이썬은 음수 인덱스를 사용할 수 있다는 특이성이 있는데, 리스트 원소의 개수를 모르는 경우 마지막 원소를 찾아갈 때, n-1 대신 -1을 쓰면 마지막 원소를 찾을 수 있다. 또한 -2라고 쓰면 마지막에서 두번째 원소를 찾을 수 있다.
my_mixed_list = [1, "Hello", True, 3.14]
print(my_mixed_list[-1])
print(my_mixed_list[-4])
- 파이썬에서 제공하는 리스트 관련 주요 함수는 append, extend, insert, remove, pop, clear, index, count, sort , reverse, copy, len, min, max, sum 등이 있다.
my_list = [1, 2, 3, 4, 5]
my_list.append(6)
print(my_list)
my_list = [1, 2, 3, 4, 5]
ur_list = [6, 7, 8, 9]
my_list.extend(ur_list)
print(my_list)
my_list = [1, 2, 3, 4, 5]
my_list.insert(3,10)
print(my_list)
mylist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
slice2 = mylist[:5]
print(slice2)
튜플
- 튜플은 여러 개의 원소를 저장하는 자료형(container)이며, 저장 값을 변경할 수 없고(immutable), 저장된 값들에 순서가 존재(sequential)한다.
- 파이썬에서 튜플은 소괄호()를 이용해서 생성하고, 쉼표로 값을 구분하며, 다양한 유형의 데이터형을 함께 담을 수 있다.
- 즉 튜플과 리스트의 차이는 저장된 값을 변경할 수 있느냐 없느냐로 나눌 수 있으며, 이에 따라 리스트에서 사용할 수 있는 대부분의 함수들을 사용할 수 없고, count와 index, packing, unpacking정도의 주요 함수만 사용이 가능하다.
my_tuple = (1, 1, 2, 3, 4, 5)
print(my_tuple)
print(my_tuple.index(1))
print(my_tuple.count(1))
print(my_tuple.index(7))
- 만약 튜플에서 값을 바꾸고 싶은 경우, 튜플을 리스트로 바꾸고 값을 바꾸는 방법을 적용할 수 있다.
집합
- 집합은 여러 개의 원소를 저장하는 자료형(container)이고, 저장된 값을 변경할 수 있으며(mutable), 저장된 값들의 순서가 존재하지 않는다.(non-sequential)
- 파이썬에서 집합은 중괄호{}를 활용하여 생성되며 쉼표를 이용해서 구분하고, 다양한 유형의 데이터를 함께 담을 수 있다.
- 집합은 모든 원소가 고유하여, 중복이 되는 원소는 모두 동일한 원소로 간주하며, 원소는 순서와 상관이 없다. 이에 아래 집합들은 모두 동일한 집합으로 간주된다.
-
myset1 = {1, 2, 3, 4, 5} myset2 = {1, 1, 2, 3, 3, 3, 4, 5} myset3 = {5, 4, 3, 2, 1} myset4 = {5, 4, 3, 2, 1, 2, 3, 4, 5}
- 이러한 특성 대문에 파이썬의 집합에서는 각각의 원소에 접근하는 것이 허용되지 않고, index를 사용할 수 없다. 다만 in을 이용한 접근이 가능이 가능하다.
my_set = {1, 2, 3, 4, 5}
if 3 in my_set :
print("3은 집합에 속합니다.")
else :
print("3은 집합에 속하지 않습니다.")
- 집합은 리스트나 튜플과 달리 수학적 연산을 지원하며, 합집합 (ㅣ), 교집합 (&), 차집합(-), 대칭차집합 (^) 등을 출력할 수 있다. 여기서 대칭차집합이란 합집합에서 교집합을 제외한 것이다. (수학적 연산을 하려면 리스트, 튜플을 set 함수를 사용하여 집합으로 변환)
- 이외에도 파이썬에서 제공하는 집합 함수들은 add, update, remove, discard, pop, clear, copy, len, union, intersection, difference, issubset, issuperset, isdisjoint 등이 있다.
- 여기서 remove와 discard의 차이점은 없는 내용을 요청할 때, remove는 오류를 반환하고, discard는 오류를 반환하지 않는다는 특징이 있다.
# 두 리스트가 공유하는 원소를 찾는 코드로 리스트를 set을 사용하여 집합으로 변환
def find_common_elements(list1, list2):
set1 = set(list1)
set2 = set(list2)
common_elements = set1.intersection(set2)
return common_elements
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
common_elements = find_common_elements(list1, list2)
print("두 리스트에 공통된 요소 :", common_elements)
딕셔너리
- 딕셔너리는 사전과 같으며 key와 값(value)의 쌍으로 데이터를 저장하는 구조이다. 집합과 유사하게 중괄호{}를 이용하여 생성하며, 각 원소에 접근하는 것이 허용되지 않는다. 각 원소들은 쉼표로 구분하나, 콜룸:을 활용하여 표현한다.
mydict = {"key1" : "value1", "key2" : "vale2"}
- 동일한 키가 여러번 입력될 수 는 있으나, 하나의 키가 두번이상 나오면 마지막에 나오는 키의 값을 저장한다.
- 딕셔너리는 순서가 없기 때문에 index 함수는 사용이 불가하며, key를 통해서만 접근 할 수 있고 원소를 추가할 때도 key를 이용해서만 추가할 수 있다.
mydict = {"Tom" : "New York", "Jane" : "Chicago", "Bill" : "Boston"}
print(mydict["Tom"])
mydict["Jack"] = "LA"
print(mydict)
- 딕셔너리와 관련된 함수는 clear, copy, fromkeys, get, items, keys, values, pop, popitem, setdefault, update, len 등이 있다.
'통계와 빅데이터' 카테고리의 다른 글
확률과 확률분포 (1) | 2024.09.08 |
---|---|
파이썬, R, SQL 차이, 난이도, 동시 학습 주의점 (6) | 2024.09.08 |
데이터과학, 데이터과학자와 데이터 주도권 (8) | 2024.09.07 |
데이터의 구분 - 정형 데이터, 반정형 데이터, 범주형 데이터, 수치형 데이터 (0) | 2024.09.07 |
챗봇 비교 : ChatGPT, Microsoft Copilot, Google Gemini (4) | 2024.09.06 |