본문 바로가기

⏳ 알고리즘/python 알고리즘 개념

배열 기반의 연속 방식(1) - 내장 시퀀스 타입(문자열, 튜플, 리스트)

책 <파이썬 자료구조와 알고리즘>을 기본으로 배운 자료구조 내용입니다.

 

목차

  • 내장 시퀀스 타입의 깊은 복사와 슬라이싱 연산

  • 내장 시퀀스 타입인 문자열, 튜플, 리스트의 기본 형식과 자주 쓰이는 메서드

 

 

<내장 시퀀스 타입 - 문자열, 튜플, 리스트>

깊은 복사와 슬라이싱 연산

깊은 복사

얕은 복사가 복합객체(리스트)만 복사되고 그 안의 내용은 동일한 객체를 참조한다면, 깊은 복사의 경우에는 복합객체를 새롭게 생성하고 그 안의 내용까지 재귀적으로 새롭게 생성함.

 

슬라이싱 연산

seq[start : end : step]

 

문자열

문자열 메서드

A.join(B) 리스트 B에 있는 모든 문자열을 단일 문자열 A로 결합
A.ljust/ rjust(width, fillchar) 문자열 A를 맨처음/맨뒤 부터 채운뒤, (width-A길이)만큼 fillchar채움
A.format() 문자열 A에 변수 추가하거나 형식화
A.splitlines() 문자열 A를 \n을 기준으로 분리
A.split/ rsplit(t,n) 문자열 A에서 문자열 t를 기준으로 n번만큼 분리
A.strion/ lstrip/ rstrip(B) 문자열 A 앞뒤의 문자열 B를 제거
A.wqpcase() 대소문자 반전한 복사본 변환
A.indes/ rindes(sub, start, end)

문자열 A에서 부분 문자열 sub의 인덱스 위치를 반환

-> 실패 : ValueError

A.find/ rfind(sub, start, end)

문자열 A에서 부분 문자열 sub의 인덱스 위치를 반환

-> 실패 : -1반환

A.count(sub, start, end) 문자열 A에서 부분 문자열 sub가 나온 횟수 반환
A.replace(old, new, n) old를 new로 최대개수n만큼 변경
f-스트링

기존의 %나 .format 방식에 비해 간결.

                                                 

name = "프레드"

f"그의 이름은 {namd!r}입니다."

 

튜플 : ( seq1, seq2, seq3, ... )

튜플 메서드

A.oount(x) : 튜플A에 담긴 항목x의 개수 반환

A.index(x) : 항목x의 인덱스 위치 반환

 

네임드 튜플 collections

튜플 항목을 인덱스 위치 뿐만 아니라 이름으로도 참조 가능

import collections

 

리스트 : [ seq1, seq2, seq3, ... ] 

검색 속도는 리스트 < 셋, 딕셔너리

리스트 메서드

A.append(x) 리스트 A의 끝에 x추가
A.extend(c) 반복 가능한 모든 항목 c를 리스트 A에 추가
A.insert(i, x) 리스트 A의 인덱스 T에 항목 x삽입
A.remove(x) 리스트 A의 항목 x제거
A.pop(i) 리스트 A의 인덱스 i에 있는 항목 제거, 그 항목 반환
del문 리스트 A의 변수 자체, 리스트 내 범위, 인덱스 삭제 가능
A.index(x) 리스트 A에서 항목 x의 인덱스 반환
A.reverse() 리스트 A의 항목들 반전
A.sort(key, reverse)

기본 : 오름차순 정렬

reverse = True : 내림차순 정렬

 

리스트 컴프리핸션 : 반복문의 표현식

[ 항목 for 항목 in 반복 가능한 객체 ]

[ 표현식 for 항목 in 반복 가능한 객체 if 조건문 ]