핵심정리

리스트

리스트는 여러 개의 값(요소)을 일렬로 늘어놓은 형태입니다. 변수에 값을 저장할 때 [ ](대괄호)로 묶어주면 리스트가 되며 각 값은 ,(콤마)로 구분합니다. 리스트에 저장된 값(요소)에 접근할 때는 [ ] 안에 인덱스를 지정해줍니다. 특히 리스트의 인덱스는 0부터 시작합니다.

리스트 = [, , ]       # 리스트 만들기
리스트 = []                 # 빈 리스트 만들기
리스트 = list()             # 빈 리스트 만들기
 
리스트[인덱스]              # 리스트의 요소에 접근
리스트[0]                   # 리스트의 인덱스는 0부터 시작하므로 첫 번째 요소
리스트[인덱스] =          # 리스트의 요소에 값 저장
 
len(리스트)                 # 리스트의 요소 개수(길이) 구하기

튜플

튜플은 여러 개의 값(요소)을 일렬로 늘어놓은 형태입니다. 단, 요소의 값을 변경하거나 추가할 수 없습니다(읽기 전용). 변수에 값을 저장할 때 ( )(괄호)로 묶어주면 튜플이 되며 각 값은 콤마로 구분합니다. 또는, 괄호로 묶지 않고 값만 콤마로 구분해도 튜플이 됩니다. 튜플에 저장된 값(요소)에 접근할 때는 [ ]안에 인덱스를 지정해줍니다. 그리고 리스트와 마찬가지로 튜플의 인덱스도 0부터 시작합니다.

튜플 = (, , )       # 튜플 만들기
튜플 = , ,          # 괄호 없이 튜플 만들기
튜플 = ()                 # 빈 튜플 만들기
튜플 = tuple()            # 빈 튜플 만들기
튜플 = tuple(list())      # tuple에 list()를 넣어서 빈 튜플 만들기
튜플 = tuple(리스트)      # tuple에 리스트를 넣어서 튜플 만들기
 
튜플[인덱스]              # 튜플의 요소에 접근
튜플[0]                   # 튜플의 인덱스는 0부터 시작하므로 첫 번째 요소
 
튜플 = (, )             # 요소가 한 개인 튜플 만들기
튜플 = ,                # 요소가 한 개인 튜플 만들기
 
len(튜플)                 # 튜플의 요소 개수(길이) 구하기

리스트(튜플) 슬라이스

리스트(튜플)는 인덱스로 범위를 지정하여 리스트(튜플)의 일부만 가져올 수 있습니다. 여기서 끝 인덱스는 가져오려는 인덱스보다 1을 더 크게 지정해야 합니다.

리스트[시작인덱스:끝인덱스]     # 리스트의 일부만 가져오기
 
리스트[:끝인덱스]         # 시작 인덱스를 생략하여 리스트의 처음부터 끝 인덱스 직전까지 가져옴
리스트[시작인덱스:]       # 끝 인덱스를 생략하여 시작 인덱스부터 리스트의 마지막까지 가져옴
리스트[:]                 # 시작 인덱스와 끝 인덱스를 생략하여 전체 리스트를 가져옴
 
리스트[0:len(리스트)]     # len을 응용하여 전체 리스트 가져오기
리스트[:len(리스트)]      # 시작 인덱스 생략, len을 응용하여 전체 리스트 가져오기

리스트 메서드

표 25-1 리스트 메서드

메서드

설명

append(값)

append(리스트)

리스트의 맨 뒤에 값을 추가, 리스트를 넣으면 리스트 안에 리스트가 들어감, 리스트[len(리스트):] = [값]과 같음

extend(리스트)

리스트의 맨 뒤에 다른 리스트 연결, 리스트[len(리스트)] = [값, 값]과 같음

insert(인덱스, 값)

리스트의 특정 인덱스에 값을 추가

remove(값)

리스트에서 특정 값을 삭제

pop()

pop(인덱스)

리스트의 마지막 값을 삭제한 뒤 삭제한 값을 반환, 인덱스를 지정하면 해당 인덱스의 값을 삭제한 뒤 삭제한 값을 반환, del 리스트[인덱스]와 같음

index(값)

리스트에서 특정 값의 인덱스를 구함

count(값)

리스트에서 특정 값의 개수를 구함

reverse()

리스트에서 값의 순서를 반대로 뒤집음

sort()

sort(reverse=True)

리스트의 값을 작은 순서대로 정렬(오름차순), reverse=True는 내림차순

clear()

리스트의 모든 값을 삭제

copy()

리스트를 복사하여 새로운 리스트 생성

튜플은 값의 정보를 구하는 index, count 메서드만 사용할 수 있습니다.

인덱스로 범위를 지정하여 리스트 조작하기

리스트는 메서드를 사용하지 않고, 인덱스로 범위를 지정하여 조작할 수 있습니다.

리스트[len(리스트):] = []        # 리스트의 맨 뒤에 값이 한 개 들어있는 리스트 추가
                                   # 리스트.append(값)과 같음
리스트[len(리스트):] = [, ]    # 리스트의 맨 뒤에 다른 리스트 연결
                                   # 리스트.extend([값, 값])과 같음
del 리스트[인덱스]    # 특정 인덱스의 값 삭제, 리스트.pop(인덱스)와 같음
del 리스트[:]    # 시작 인덱스와 끝 인덱스를 생략하여 리스트의 모든 값을 삭제, 리스트.clear()와 같음

리스트(튜플) 연산하기

리스트(튜플)에 +를 사용하면 리스트가 연결되고, *를 사용하면 리스트(튜플)의 요소가 반복됩니다.

리스트1 + 리스트2    # 리스트를 서로 연결, extend와 같음
리스트 * 정수        # 특정 횟수만큼 리스트의 요소를 반복

리스트(튜플)와 반복문

for 변수 in 뒤에 리스트(튜플)를 지정하면 반복하면서 모든 요소를 꺼내옵니다.

for 변수 in 리스트:
    반복할 코드
 
for 인덱스 in range(len(리스트)):
    리스트[인덱스]
 
while 인덱스 < len(리스트):
    리스트[인덱스]
    인덱스 += 1
 
 in 리스트        # 리스트에 특정 값이 있는지 확인
 not in 리스트    # 리스트에 특정 값이 없는지 확인

min, max, sum 함수

min은 리스트(튜플)에서 가장 작은 값, max는 가장 큰 값, sum은 요소의 합계를 구합니다.

리스트(튜플) 표현식

리스트(튜플) 표현식은 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트(튜플)를 생성합니다.

# 리스트 표현식

[식 for 변수 in 리스트]

[i for i in range(10)]

list(식 for 변수 in 리스트)

 

# 튜플 표현식

tuple(식 for 변수 in 리스트 if 조건식)

 

# if 조건문 사용

[식 for 변수 in 리스트 if 조건식]

[i for i in range(10) if i % 2 == 0]

list(식 for 변수 in 리스트 if 조건식)

# for와 if를 여러 번 사용

[식 for 변수1 in 리스트1 if 조건식1

    for 변수2 in 리스트2 if 조건식2

    ...

    for 변수n in 리스트n if 조건식n]

[i * j for j in range(2, 10) for i in range(1, 10)]

 

list(식 for 변수1 in 리스트1 if 조건식1

        for 변수2 in 리스트2 if 조건식2

        ...

        for 변수n in 리스트n if 조건식n]


리스트(튜플)에 map 함수 사용

map은 리스트(튜플)의 요소를 지정된 함수로 처리해주는 함수입니다.

리스트 = list(map(함수, 리스트))
a = list(map(int, a))
튜플 = tuple(map(함수, 튜플))
 
변수1, 변수2 = list(map(함수, 리스트))    # 언패킹 사용
a, b = list(map(str, range(2)))
 
변수1, 변수2 = map(함수, 리스트)          # 언패킹 사용
a, b = map(int, input().split())

2차원 리스트(튜플)

2차원 리스트(튜플)는 가로×세로의 평면 구조로 이루어져 있습니다. 2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있으며 안쪽의 각 리스트는 ,(콤마)로 구분해줍니다. 2차원 리스트의 요소에 접근하거나 할당할 때는 리스트에 [ ](대괄호)를 두 번 사용하며 [ ] 안에 세로 인덱스와 가로 인덱스를 지정해줍니다. 일반적으로 2차원 공간은 가로×세로로 표기하지만 리스트로 만들 때는 세로×가로로 표기합니다.

리스트 = [[, ], [, ], [, ]]    # 2차원 리스트 만들기
 
리스트[세로인덱스][가로인덱스]         # 2차원 리스트의 요소에 접근
리스트[세로인덱스][가로인덱스] =     # 2차원 리스트의 요소에 값 저장(튜플은 요소에 값 저장 불가)
 
리스트 = [(, ), (, ), (, )]    # 리스트 안에 튜플을 넣음
튜플 = ([, ], [, ], [, ])      # 튜플 안에 리스트를 넣음
튜플 = ((, ), (, ), (, ))      # 튜플 안에 튜플을 넣음

3차원 리스트(튜플)

3차원 리스트(튜플)는 높이×세로×가로 형태로 이루어져 있습니다. 3차원 공간은 가로×세로×높이로 표기하지만 리스트로 만들 때는 높이×세로×가로로 표기합니다.

리스트 = [[[, ], [, ]], [[, ], [, ]], [[, ], [, ]]]    # 3차원 리스트 만들기
 
리스트[높이인덱스][세로인덱스][가로인덱스]         # 3차원 리스트의 요소에 접근
리스트[높이인덱스][세로인덱스][가로인덱스] =     # 3차원 리스트의 요소에 값 저장
                                                   # (튜플은 요소에 값 저장 불가)

문자열

문자열은 문자를 일렬로 늘어놓은 형태라서 리스트와 비슷합니다. 따라서 문자열에 [ ](대괄호)를 붙인 뒤 인덱스를 지정하면 해당 문자를 가져올 수 있습니다. 단, 문자열은 인덱스를 지정하여 =로 문자를 할당할 수는 없습니다. 그리고 리스트와 마찬가지로 문자열의 인덱스는 0부터 시작합니다.

문자열[인덱스]    # 문자열의 문자에 접근
문자열[0]         # 문자열의 인덱스는 0부터 시작하므로 첫 번째 문자
 
len(문자열)       # 문자열의 길이 구하기

문자열 슬라이스

문자열도 리스트처럼 인덱스로 범위를 지정하여 문자열의 일부만 가져올 수 있습니다. 여기서 끝 인덱스는 가져오려는 인덱스보다 1을 더 크게 지정해야 합니다.

문자열[시작인덱스:끝인덱스]     # 문자열의 일부만 가져오기
 
문자열[:끝인덱스]         # 시작 인덱스를 생략하여 문자열의 처음부터 끝 인덱스 직전까지 가져옴
문자열[시작인덱스:]       # 끝 인덱스를 생략하여 시작 인덱스부터 문자열의 마지막까지 가져옴
문자열[:]                 # 시작 인덱스와 끝 인덱스를 생략하여 전체 문자열을 가져옴
 
리스트[0:len(리스트)]     # len을 응용하여 전체 문자열 가져오기
리스트[:len(리스트)]      # 시작 인덱스 생략, len을 응용하여 전체 문자열 가져오기

문자열 메서드

표 25-2 문자열 메서드

메서드

설명

replace(바꿀문자열, 새문자열)

문자열 안의 문자열을 다른 문자열로 바꿈

split()

split(기준문자열)

공백을 기준으로 문자열을 분리하여 리스트로 만듦, 기준 문자열을 지정하면 기준 문자열로 문자열을 분리

join(리스트)

구분자 문자열과 문자열 리스트(튜플)의 요소를 연결하여 문자열로 만듦

upper()

lower()

upper는 문자열의 문자를 대문자로 바꾸고, lower는 소문자로 바꿈

lstrip(), rstrip(), strip()

lstrip(삭제할문자들)

rstrip(삭제할문자들)

strip(삭제할문자들)

lstrip은 문자열에서 왼쪽 공백을 삭제, rstrip은 오른쪽 공백을 삭제, strip은 양쪽 공백을 삭제, 삭제할 문자들을 지정하면 해당 문자들을 삭제

zfill()

지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채움

find(찾을문자열)

rfind(찾을문자열)

find는 왼쪽에서부터, rfind는 오른쪽에서부터 특정 문자열을 찾아서 인덱스 반환, 문자열이 없으면 -1을 반환

index(찾을문자열)

rindex(찾을문자열)

index는 왼쪽에서부터, rindex는 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환, 문자열이 없으면 에러 발생

count(문자열)

현재 문자열에서 특정 문자열이 몇 번 나오는지 알아냄

문자열 서식

문자열은 서식 지정자를 조합하여 문자열을 만들 수 있습니다. 서식 지정자는 %로 시작하며 서식 지정자를 사용한 뒤 % 다음에 문자열을 지정해주면 이 문자열이 서식 지정자에 들어갑니다. 서식 지정자가 여러 개 일때는 값 여러 개를 튜플로 만들어서 지정해줍니다.

  • %s: 문자열
  • %d: 정수
  • %f: 실수
'%서식지정자' %                            # 서식 지정자 한 개 사용
'%서식지정자1, %서식지정자2' % (1, 2)    # 서식 지정자 여러 개 사용

format 메서드를 사용할 때는 { }(중괄호) 안에 인덱스를 지정하고, format에는 { } 부분에 들어갈 값을 지정해줍니다.

'{0}'.format()                      # 값을 한 개 넣음
'{0} {1}'.format(1, 2)            # 값을 두 개 넣음
'{0} {0} {1} {1}'.format(1, 2)    # 같은 인덱스에는 같은 값이 들어감
'{} {} {}'.format(1, 2, 3)      # 인덱스를 생략하면 format에 지정한 순서대로 값이 들어감
'{name1} {name2}'.format(name1=1, name2=2)    # { }에 이름을 지정

파이썬 3.6부터는 변수에 값을 넣고 { } 안에 변수 이름을 지정하면 됩니다. 이때는 문자열 앞에 f를 붙입니다.

변수1, 변수2 = 1, 2
f'{변수1} {변수2}'