티스토리 뷰
728x90
자료 구조
리스트 더 보기
list.append(x)
리스트의 끝에 항목을 더합니다. a[len(a):] = [x] 와 동등합니다.
list.extend(iterable)
리스트의 끝에 이터러블의 모든 항목을 덧붙여서 확장합니다. a[len(a):] = iterable 와 동등합니다.
list.insert(i, x)
주어진 위치에 항목을 삽입합니다. 첫 번째 인자는 삽입되는 요소가 갖게 될 인덱스입니다. 그래서 a.insert(0, x) 는 리스트의 처음에 삽입하고, a.insert(len(a), x) 는 a.append(x) 와 동등합니다.
list.remove(x)
리스트에서 값이 x 와 같은 첫 번째 항목을 삭제합니다. 그런 항목이 없으면 ValueError를 일으킵니다.
list.pop([i])
목록에서 지정된 위치에 있는 항목을 제거하고 반환합니다. 인덱스가 지정되지 않은 경우 a.pop()은 목록의 마지막 항목을 제거하고 반환
list.clear()
리스트의 모든 항목을 삭제합니다. del a[:] 와 동등합니다.
list.index(x[, start[, end]])
리스트에 있는 항목 중 값이 x 와 같은 첫 번째 것의 0부터 시작하는 인덱스를 돌려줍니다. 그런 항목이 없으면 ValueError 를 일으킵니다.
선택적인 인자 start 와 end 는 슬라이스 표기법처럼 해석되고, 검색을 리스트의 특별한 서브 시퀀스로 제한하는 데 사용됩니다. 돌려주는 인덱스는 start 인자가 아니라 전체 시퀀스의 시작을 기준으로 합니다.
list.count(x)
리스트에서 x 가 등장하는 횟수를 돌려줍니다.
list.sort(*, key=None, reverse=False)
리스트의 항목들을 제자리에서 정렬합니다 (인자들은 정렬 커스터마이제이션에 사용될 수 있습니다. 설명은 sorted() 를 보세요).
list.reverse()
리스트의 요소들을 제자리에서 뒤집습니다.
list.copy()
리스트의 얕은 사본을 돌려줍니다. a[:] 와 동등합니다.
리스트 컴프리헨션:
간결한 리스트 생성 방법
문법: [표현식 for 항목 in 반복가능객체 if 조건]
예: squares = [x**2 for x in range(10)]
del 문:
리스트 요소 또는 슬라이스 삭제
변수 자체 삭제 가능
예: del a[0], del a[2:4], del a
튜플과 시퀀스
튜플의 기본 특성:
- 쉼표로 구분된 값들의 집합
- 괄호로 둘러싸여 있음 (선택적이지만 권장됨)
- 불변(immutable) 자료형
- 이질적인 데이터를 포함할 수 있음
튜플 생성 및 접근:
생성: t = 12345, 54321, 'hello!'
또는 t = (12345, 54321, 'hello!')
접근: 인덱싱 사용 (예: t[0]
)
중첩 가능: u = t, (1, 2, 3, 4, 5)
특별한 경우의 튜플:
빈 튜플: empty = ()
단일 요소 튜플: singleton = 'hello', (끝에 쉼표 필요)
튜플 vs 리스트:
- 튜플: 불변, 이질적 요소, 언패킹이나 인덱싱으로 접근
- 리스트: 가변, 동질적 요소, 주로 반복으로 접근
튜플 패킹과 언패킹:
- 패킹: t = 12345, 54321, 'hello!'
- 언패킹: x, y, z = t
튜플의 활용:
- 여러 값을 동시에 할당할 때 유용
- 함수에서 여러 값을 반환할 때 사용
- 데이터의 안전한 그룹화 (변경 방지)
주의사항:
- 튜플 자체는 불변이지만, 튜플 내의 가변 객체(예: 리스트)는 변경 가능
- 튜플의 요소 수와 언패킹하는 변수의 수가 일치해야 함
집합
집합의 특징:
- 중복되는 요소가 없는 순서 없는 컬렉션
- 주요 용도: 멤버십 검사와 중복 제거
집합 생성:
- 중괄호 사용:
basket = {'apple', 'orange', 'pear'}
- set() 함수 사용:
a = set('abracadabra')
- 빈 집합은
set()
으로만 생성 가능 ({}는 빈 딕셔너리)
집합 연산:
- 멤버십 검사:
'orange' in basket
- 차집합:
a - b
- 합집합:
a | b
- 교집합:
a & b
- 대칭 차집합:
a ^ b
집합 컴프리헨션:
- 문법:
{표현식 for 항목 in 반복가능객체 if 조건}
- 예:
a = {x for x in 'abracadabra' if x not in 'abc'}
집합의 장점:
- 빠른 멤버십 검사
- 중복 요소 자동 제거
- 수학적 집합 연산 지원
사용 예:
- 고유한 항목 목록 만들기
- 두 컬렉션의 공통 요소 찾기
- 한 컬렉션에는 있지만 다른 컬렉션에는 없는 요소 찾기
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
'orange' in basket # fast membership testing
True
'crabgrass' in basket
False
# Demonstrate set operations on unique letters from two words
a = set('abracadabra')
b = set('alacazam')
a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
a - b # letters in a but not in b
{'r', 'd', 'b'}
a | b # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
a & b # letters in both a and b
{'a', 'c'}
a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}
딕셔너리
딕셔너리의 기본 개념:
- 키-값 쌍의 집합
- 키는 유일해야 하며, 불변(immutable) 타입이어야 함
- 순서가 없는 자료구조
딕셔너리 생성:
- 중괄호 사용:
tel = {'jack': 4098, 'sape': 4139}
- dict() 생성자 사용:
dict([('sape', 4139), ('guido', 4127)])
- 키워드 인자 사용:
dict(sape=4139, guido=4127, jack=4098)
주요 연산:
- 값 추가/수정:
tel['guido'] = 4127
- 값 접근:
tel['jack']
- 키-값 쌍 삭제:
del tel['sape']
- 키 존재 확인:
'guido' in tel
유용한 메서드와 함수:
- 모든 키 얻기: list(tel) 또는 tel.keys()
- 정렬된 키 목록: sorted(tel)
- 모든 값 얻기: tel.values()
- 키-값 쌍 얻기: tel.items()
딕셔너리 컴프리헨션:
- 문법:
{key: value for item in iterable}
- 예:
{x: x**2 for x in (2, 4, 6)}
특징:
- 빠른 검색 속도 (해시 테이블 기반)
- 키로 문자열, 숫자, 튜플 사용 가능 (리스트는 불가)
- 파이썬 3.7부터는 삽입 순서 유지
주의사항:
- 존재하지 않는 키로 접근 시 KeyError 발생
- 키는 유일해야 함 (중복 시 마지막 값으로 덮어씀)
출처: 파이썬 튜토리얼
728x90
댓글