
list.append()list.pop()이 LIFO

``python
a = []
b = list()
c = [1, 2, 3, 4]
d = [1000, 10000, 'Ace', 'Base', 'Captine']
e = [1000, 10000, ['Ace', 'Base', 'Captine']]
print(e[-1])
print(e[2][2])
--- 출력 ---
['Ace', 'Base', 'Captine']
Captine
---
# List 메서드
## `len(list)`: 리스트 길이
```python
a = [1,2,3,4,5]
print( len(a) )
---- 출력 ----
5
len(list) 주의점for문으로 실행되기 때문에 을 일단 잡아먹는다.
따라서 아래와 같이 미리 길이를 구해두어야 혹은 길이는 for문 아래서 즉각 즉각 처리해줘야
list_len=len(list)
for i in range(0, list_len):
# do somthing
list_len=len(list)
for i in range(0, list_len):
del list[idx] # for문 내에서 리스트를 삭제 조작 -> list_len에 반영해야함
list_len-=1
memset() 같은 것이 없다. 그래서 여러 방법 중 하나를 선택한다.[내용] * 크기arr=([init_value] * size)
arr=([0] * 10)
길이시 117 ms[i for i in range(N)]arr = [i for i in range(size)]
612 ms, 방법 1번보다 6배 느림a = [0 for i in range(10)]arr = [0 for i in range(10)]
print(arr)
==== 출력 ====
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
a = [i for i in range(10)]arr = [i for i in range(10)]
print(arr)
==== 출력 ====
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a.append(value)a=list()
for i in range(size):
a.append(i)
842 ms, 방법 1번보다 8배 느림. 방법 2번보다 200ms 느림입력 예시
10
8 24 27 18 20 6 17 19 30 11
정석
import sys
readl=sys.stdin.readline
N=int(readl())
A=list(map(int, readl().split())
A=list(map(int, readl().split())
string = ' '.join( [x for x in string.strip().split() if x.find(pword) == -1 ] )

a = [1,2,3,4,5]
a.append(6)
print(a)
--- 출력 ---
[1, 2, 3, 4, 5, 6]
+= 해도됨n=20
arr=[-1,0,1,1,2,3,2,3,3,2,3]
# 0,1,2,3,4,5,6,7,8,9,10
if n > 10:
arr+=([0]*(n-10)) #위 값에서 붙여서 그대로 0으로 채워 append 됨
=== 출력 ===
[-1, 0, 1, 1, 2, 3, 2, 3, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
a=list()
a.insert(idx, val)
a = [1, 2, 3, 4, 5]
a.insert(0,10)
print(a)
--- 출력 ---
[10, 1, 2, 3, 4, 5]

a = [1,2,3,4,5]
a.remove(3)
print(a)
=== 출력 ===
[1,2,4,5]
a = [1,2,2,3,4,5]
a.remove(2)
print(a)
=== 출력 ===
[1, 2, 3, 4, 5]
a = [1,2,2,3,4,5]
del a[0]
print(a)
=== 출력 ===
[2, 2, 3, 4, 5]
a = [1,2,2,3,4,5]
del a[-1]
print(a) # [1, 2, 2, 3, 4]
del a[0:]
print(a) # []
a=list()
del a
del a 로 a 객체 자체를 제거한다.a = [1, 2, 3, 4]
a.pop()
print(a)
=== 출력 ===
[1, 2, 3]
list.pop(index) 번호를 넣으면, index의 element를 제거!!
a = ['감자', '사과', '사과', '배']
cnt=a.count('사과')
print(cnt)
=== 출력 ===
2
<list>.index('val', start index, end index)



<list>.reverse(): -> NoneA=['a', 'b', 'c']
A.reverse()
print(A)
---- 출력 ----
['c', 'b', 'a']
[:]
[ 0 : 10 ]
[::-1]
[2:0:-1]
*' 사용print(*A) 로 리스트 element를 하나씩 띄워 STDOUT에 표시할 수 있다.

# A=['2', '5', '8', '2', '1']
print(*A[0:2])
# ------ 출력 ------- #
2 5
map은 Iterable 객체의element를 지정된 함수로 하나 하나 처리, 원본 변경Xlist(map(func, input_list)) -> list
tuple(map(func, input_tuple)) -> tuple
list( func , input: list) -> output: list

N,M=map(int,<'str'>)import sys
readl=sys.stdin.readline
N, M=map(int,readl().strip().split())
print(N,M)
list 생성방법 1.
maps=[]
for i in range(0,10):
maps.append([])
maps[i]="i행 내용"
# e.g., maps[i]=[0]*10
방법 2.
maps=[ [] for _ in range(0,10)]
for i in range(0,10):
maps[i]="i행 내용"
# e.g., maps[i]=[0]*10
R=2
C=3
maps=[]
for i in range(R):
maps.append([])
for j in range(C):
maps[i].append((i+1)*(j+1))

V=N+1
maps=[]
for i in range(0,V): # 1. Vertex 노드 생성
maps.append([])
for i in range(0,E): # 2. 각 Edge 이어주기
start=sys.stdin.readline()
end=sys.stdin.readline()
maps[start].append(end)
# sample edge
7 8
1 2
1 4
1 5
2 3
3 4
3 7
4 6
5 6
----
maps=[]
for i in range(0, V+1):
maps.append([])
for i in range(0, E):
get_line=sys.stdin.readline()
start=get_line[0]
end=get_line[1]
maps[start].append(end)
for i in range(0, V+1):
print(f'maps[{i}]: {maps[i]}').

sorted( sorted_target: <type> [, key= <function>] [, reverse= <bool>] ) -> <type>
sorted가 가능한 type:
<list>, <tuple>, <dict>, <str>
reverse:
True 내림차순
False 오름차순
def comp(item: dict):
return item['age'] # 정렬 기준
if __name__ == '__main__':
student1={'name': 'yang', 'age': 28}
student2={'name': 'kim', 'age': 20}
students=[student1, student2]
students=sorted(students, key=comp)
print(students)
# === 출력 === #
[{'name': 'kim', 'age': 20}, {'name': 'yang', 'age': 28}]
self.age 순으로 오름차순 정렬class Student():
def __init__(self, name:str, age: int):
self.name=name
self.age=age
def comp(item):
return item.age
if __name__ == '__main__':
student1=Student('yang',28)
student2=Student('kim',20)
student_list=[student1, student2]
students=sorted(student_list, key=comp)
for now_student in students:
print(now_student.age)
# ====== 출력 ====== #
20
28
lambda 함수를 어렵게 생각하지 말고, 먼저 위 comp함수에 익숙해지면, 이를 한줄로 옮기기도 쉽다.object의 age 순으로 오름 차순을 한다고 생각할 때comp 함수def comp(item):
return item.agelambda item: item.age
students=sorted(student_list, key=lambda item: item.age)
1순위: age 오름차순
2순위: age가 같을 경우 name의 사전 순



import heapq
heapq는 생성하는 것이 아닌! 일반 list 를 사용한다!import heapq
pq=[]
heapq.heappush(pq, 1)
heapify()heapq.heapify( 리스트 )
pq=[5,4,3,2,1]
heapq.heapify(pq)

heappush()heapq.heappush( 리스트 , 값)
a=[]
heapq.heappush(a, 1)
pq=[5,4,3,2,1]
heapq.heapify(pq) # 꼭 기존 리스트에서 heap을 사용하려면, heapify 해야함
heapq.heappush(pq, 6)
heappop()heapq.heappop( 리스트 ) -> value

https://hellominchan.tistory.com/231
import heapq
if __name__ == '__main__':
pq=[]
heapq.heappush(pq,(1,'hello'))
while pq:
prio, val=heapq.heappop(pq)
print(prio,val)
# ===== 출력 ===== #
1 hello