
import sys
input_data = sys.stdin.readline().rstrip()
리스트 기본
# 빈 리스트 선언 방법
a = list()
a = []
# 모든 값이 0인 1차원 리스트 초기화
a = [0] * 10 # [0,0,0,0,0,0,0,0,0,0]
# 슬라이싱 (마지막 인덱스 포함 X)
a = [1,2,3,4,5,6,7,8,9]
a[-3] # 7
a[1:4] # [2,3,4]
리스트 컴프리헨션
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i*i for i in range(1,10)]
⭐️⭐️⭐️
# N * M 크기의 2차원 리스트 초기화
array = [[0] * m for _ in range(n) ] # [[0,0,0,0],[0,0,0,0],[0,0,0,0]]
visited = [[False for _ in range(m)] for _ in range(n)]
리스트 메서드
# 오름차순 정렬
a.sort()
# 내림차순 정렬
a.sort(reverse = True)
⭐️⭐️⭐️
# 람다로 특정 조건 정렬
array = [('홍길동', 35, 1), ('이순신', 17, 1), ('아무개', 88, 0)]
array.sort(key=lambda x: (-x[1], x[2], x[0]))
# 대소문자 없이 정렬
array.sort(key = lambda x: x.lower())) # ['CHicken', 'chocolate', 'hamburger', 'Sushi']
⭐️⭐️⭐️
# 리스트 원소 뒤집기 O(n)
a.reverse()
# 특정 인덱스에 데이터 추가 O(n)
a.insert(1,3) # 인덱스 1에 3추가
# 특정 값인 데이터 개수 세기 O(n)
a.count(3)
# 특정 값 데이터 삭제 (인덱스가 낮은 것 하나) O(n)
a.remove(3)
# 특정 값 인덱스 반환 O(n)
a.index(3)
# 특정 인텍스로부터 값이 처음 나온 위치 반환 O(n)
a.find(3,1) # 인덱스 1부터 3 처음 나온 위치 반환
리스트 복사 오류
# AS-IS
# 이 코드는 d 리스트의 각 요소가 동일한 객체를 참조하게 만듦
# 어떤 인덱스에서 하나의 요소를 변경하면 모든 참조된 객체가 함께 변경
d = [[100000, -1]] * 100001
# TO-BE
# d 리스트를 각 인덱스마다 독립된 리스트로 초기화해야 함
d = [[100000, -1] for _ in range(100001)]
깊은 복사
import copy
arr2 = copy.deepcopy(arr1)
모든 조합 저장
d = [(i, j) for i in a, for j in b]
enumerate
for index, val in enumerate(_list):
print(index, val)