리스트 선언
단순 선언
arr = []
arr = [1, 2, 3]
arr = [[] for _ in range(n)]range 기반 선언(range는 a이상 b미만)
arr = list(range(10)) # 0~9
arr = list(range(1, 11)) # 1~10
arr = list(range(0, 21, 2)) # 0,2,4,...20k의 배수 리스트 만들기
k = 3
arr = [i * k for i in range(0, 10)] # 0,3,6,9,...map 사용 (문자열 입력 숫자로 변환)
arr = list(map(int, input().split()))set 사용 (문자열 중복 제거)
list(set(my_list)) # 순서 상관없이 중복 제거
list(dict.fromkeys(my_list)) # 순서 유지 중복 제거조건/가공 포함 리스트 컴프리헨션
arr = [x*x for x in range(10)]
even = [x for x in range(10) if x % 2 == 0]리스트 초기화
n개의 0으로 초기화
arr = [0] * n2차원 배열 초기화 (정방형)
board = [[0] * m for _ in range(n)]❗ 주의 ❗
board = [[0] * m] * n
는 shallow copy라 모든 행이 같은 리스트를 참조하므로 절대 금지.
길이가 다른 2차원 배열 생성
board = []
for _ in range(n):
size = int(input())
board.append([0] * size)리스트 인덱스 기반 반복
기본 for 문
for i in range(len(arr)):
print(i, arr[i])enumerate (index + value)
for idx, val in enumerate(arr):
print(idx, val)2차원 배열 반복
기본 x, y 중첩 반복
for x in range(n):
for y in range(m):
print(board[x][y])x, y, z 여러 중첩 반복
for x in range(A):
for y in range(B):
for z in range(C):
pass길이가 다른 2차 배열
for row in board:
for val in row:
print(val)리스트 추가 / 삭제 / 삽입 / 합치기
append / pop
arr.append(5)
arr.pop() # 마지막 요소 제거
arr.pop(i) # i번째 요소 제거insert
arr.insert(2, 99) # index 2에 99 삽입remove
arr.remove(3) # 값 3을 제거 (가장 처음 발견된 요소만)join 결합
arr.extend(other)
new = arr + otherjoin 결합
"".join(arr)extend (리스트 합치기)
arr.extend(other)
new = arr + otherzip으로 1:1 매칭된 튜플 만들기
a = [1, 2, 3]
b = ['a', 'b', 'c']
pairs = list(zip(a, b))
# [(1, 'a'), (2, 'b'), (3, 'c')]리스트 정렬
오름차순 / 내림차순
arr.sort()
arr.sort(reverse=True)key 옵션 (매우 중요!)
arr.sort(key=lambda x: x[1]) # 두 번째 요소 기준
arr.sort(key=lambda x: (x[0], -x[1])) # 복합 정렬sorted (원본 유지)
res = sorted(arr)리스트 슬라이싱
sub = arr[2:5] # index 2~4
rev = arr[::-1] # reverse
cen = arr[1:-1] # 앞뒤 빼고리스트에서 특정 범위 개수 세기 (이분 탐색)
from bisect import bisect_left, bisect_right
cnt = bisect_right(arr, R) - bisect_left(arr, L)리스트에서 빈도 기반 개수 세기
from collections import Counter
Counter(arr).most_common()두 리스트의 모든 조합 만들기
a = [1, 2]
b = ['A', 'B', 'C']
pairs = [(x, y) for x in a for y in b]
# [(1,'A'), (1,'B'), (1,'C'), (2,'A'), (2,'B'), (2,'C')]
# itertools.product 방법
from itertools import product
list(product(a, b))코테에서 많이 쓰는 패턴
최대값 위치 찾기
idx = arr.index(max(arr))2차원 배열 복사 (deep copy)
import copy
b = copy.deepcopy(a)조건으로 배열 재가공
minx_list = [row.find("#") for row in wallpaper if row.find("#") != -1]
y_list = ["exist" if row.find("#") != -1 else "none" for row in wallpaper]뒤에서부터 리스트 index 검색(리스트는 rindex가 없음)
idx = len(my_list) - 1 - my_list[::-1].index("#")