집합(set)은 서로 구별 가능한 객체들의 모임으로, 이를 구성하는 객체들을 원소(element) 또는 멤버(member)라고 부른다.
◾ 집합은 중복된 원소를 가질 수 있다. 하지만 중복된 원소를 가진 집합과 중복된 원소를 가지지 않는 집합은 정확히 같은 집합이라고 한다. (확장성의 공리)
◾ 집합의 원소들이 나열된 순서는 중요하지 않다.
집합의 선언은 다음과 같다. set A = { 1, 2, 3 }
set 클래스에 추가할 수 있는 요소들은 변경할 수 없는(immutable) 자료형만 가능하다.
예를 들어, 정수, 실수, 문자열 등이 요소로 사용될 수 있다.
빈 집합을 생성하려면 set() 생성자를 이용하면 된다.
리스트는 값의 순서를 갖는 데이터 타입으로, 동일한 값이 여러번 나타날 수 있다.
리스트는 다음과 같이 선언될 수 있다. L = [1, 2, 3]
파이썬에는 기본적으로 리스트(List), 튜플(Tuple), 문자열(String)이라는 시퀀스(sequence) 타입이 내장되어있다. 각각의 요소는 인덱스(index)를 이용하여 개별적으로 접근할 수 있다.
예시)
# 리스트 인덱싱 예시
a = [1, 2, 3, 4, 5]
print(a[0]) # 1 출력
print(a[3]) # 4 출력
# 튜플 인덱싱 예시
b = (10, 20, 30, 40, 50)
print(b[1]) # 20 출력
print(b[4]) # 50 출력
# 문자열 인덱싱 예시
c = "Hello, world!"
print(c[0]) # 'H' 출력
print(c[7]) # 'w' 출력
리스트에서 요소를 삽입하려면 다음과 같은 함수를 사용한다.
append()
append() 메소드를 이용하여 리스트의 맨 뒤에 요소를 추가할 수 있다.
예시)
a = [1, 2, 3]
a.append(4)
print(a) # [1, 2, 3, 4]
리스트에서 요소를 삭제하기 위해 다음의 함수를 사용한다.
remove(), del()
del 키워드를 이용하여 리스트의 특정 위치에 있는 요소를 삭제할 수 있다.
예시)
a = [1, 2, 3]
del a[1]
print(a) # [1, 3]
remove() 메소드를 이용하여 리스트에서 특정 값을 삭제할 수 있다.
만약 리스트에 해당 값이 여러 개 존재한다면, 가장 먼저 나오는 값 하나만 삭제된다.
예시)
a = [1, 2, 3, 2]
a.remove(2)
print(a) # [1, 3, 2]
파이썬에서는 자바와 비슷하게 추상정의를 상용해서 클래스를 생성 가능하다.
예시)
from abc import ABCMeta, abstractmethod
class Sequence(metaclass = ABCMeta):
@abstractmethod
def __len__(self):
"""Return the length of the sequence."""
@abstractmethod
def __getitem__(self, j):
"""Return the element at index j of the sequence."""
def __contains__(self, val):
"""Return True if val found in the sequence; False otherwise."""
for j in range(len(self)):
if self[j] == val:
return True
return False
def index(self, val):
"""Return leftmost index at which val is found (or raise ValueError)."""
for j in range(len(self)):
if self[j] == val:
return j
raise ValueError('value not in sequeunce')
def count(self, val):
"""Return the number of elements equal to given value."""
k = 0
for j in range(len(self)):
if self[j] == val:
k += 1
return k