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(): -> None
A=['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.age
lambda 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