def f(x,y):
z = x + y
return z
print(f(3, 5))
a = 1
def aplus():
global a
a += 10
return a
print(aplus())
li = [1, 1, 2, 3, 4, 5]
print(li)
print(type(li))
print(dir(li))
li.append('a') # [1, 1, 2, 3, 4, 5, 'a']
# append = push
print(li)
print(li.count(1)) #2
li.extend([11, 22])
print(li) #[1, 1, 2, 3, 4, 5, 'a', 11, 22]
# extend = concat
print(li.index(1)) # 0
# index = indexOf
#pop() = pop
#argument 없으면 맨뒤에꺼 삭제, 값이 있으면 해당 번째 삭제
li.insert(1, 3000) #[1, 3000, 1, 2, 3, 4, 5, 'a', 11, 22]
#insert(몇번째, 값)
print(li)
li.remove(100)
# 처음 만나는 100을 지움
#reverse() = reverse
#sort() = sort()
#sorte(), reversed()도 있는데 이거는 원 리스트는 놔두고 새로운 리턴을 만들어
a = [1, 2, 3]
b = a
b[0] = 111
#a = [111, 2, 3]으로 바뀜
b = a.copy()
를 붙여주면 된다.a = 10
while a < 15:
print('hello world')
a += 1
a = 1
while a < 5:
print('hi')
a += 1
else :
print('bye')
"""
결과
hi
hi
hi
hi
bye
"""
for _ in range(5)
print("Hello World")
l = [1, 2, 3, 4]
s = {1, 2, 3, 4}
d = {'one':1, 'two':2}
for i in l:
print(i)
"""
1
2
3
4
"""
for i in s:
print(i)
"""
1
2
3
4
"""
for i in d:
print(i)
"""
one
two
"""
#range(start, stop, step)
print(type(range(1)))
print(1, list(range(10)))
print(2, list(range(5, 10)))
print(3, list(range(2, 10, 2)))
print(4, list(range(10, 5, -1)))
print(5, list(range(-10)))
"""
<class 'range'>
1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2 [5, 6, 7, 8, 9]
3 [2, 4, 6, 8]
4 [10, 9, 8, 7, 6]
5 []
"""
for i in 'hello world'
print(i)
a = [0] * 10
print(a)
#결과
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[1:4])
#결과
#[2,3,4]
l = [i for i in range(10)]
print(l)
for i in range(2, 10):
for j in range(1, 10):
print('{} X {} = {}'.format(i, j, i*j));
ll = ['{} X {} = {}'. format(i, j, i*j) for i in range(2, 10) for j in range(1, 10)]
두번째와 세번째의 구구단 코드는 같은 결과임
지능형 리스트에 조건문도 쓸 수 있음
array = [i for i in range(20) if i % 2 == 1]
print(array)
#[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
m = 2
n = 3
array = [[0] *m for _ in range(n)]
print(array)
#[[0, 0], [0, 0], [0, 0]]
array = [[0*m]*n
이렇게 쓰면 안됨
이때는 똑같은 행이 n개 생긱는거라서 행안에 데이터가 바뀌면 모든 행 데이터가 똑같이 바뀜
a = 1e9 -> 1 10^9
b = 75.25e1 -> 75.2510^1 -> 752.5
c = 3954e-3 -> 3.954
a = "String"
print(a*3)
"""
StringStringString
"""
b = "ABCDEF"
print(a[2:4])
"""
CD
이때 글자를 바꿀수는 없음 (immutable)
"""
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data)
if '사과' in data:
print('사과 in data')
if '사과' in data.keys():
print('keys()에 사과가 있습니다.')
if 'Apple' in data.values():
print('values()에 Apple이 있습니다')
"""
{'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'}
사과 in data
keys()에 사과가 있습니다.
values()에 Apple이 있습니다
"""
a = {}
#키로 반복
for key in a:
print(a)
#키, 밸류로 반복
for key, value in a.items():
print(key, value)
data = {1, 2, 3}
data.add(11) # {1, 2, 3, 11}
data.update([4, 5]) # {1, 2, 3, 11, 4, 5}
data.remove(2) # {1, 3, 11, 4, 5}
def functionName(parameter):
#code
return result
str1 = "hello"
print(len(str1))
li = [1, 9, 3, 2]
#방법1
print(sorted(li))
#방법2
li.sort()
print(li)
#문자열에서 정렬
string = 'adfasdf'
result = "".join(sorted(string))
print(result)
문자열로 : str()
숫자로 : int()
stack = []
stack.append(3) #O(1)
stack.append(2)
stack.append(5)
stack.append(1)
stack.append(1)
stack.pop() #O(1)
stack.append(5)
print(stack[::-1]) #위부터 출력
print(stack) #밑부터 출력
from collections import deque
# 큐 구현을 위해 deque 라이브러리 이용
queue = dequeue()
queue.append(5) #O(1)
queue.append(2)
queue.append(1)
queue.append(3)
queue.append(1)
queue.popleft() #O(1)
print(queue) #먼저 들어온 원소부터 출력
queue.reverse() #역순으로 바꿈
print(queue) #나중에 들어온 원소부터 출력
queue.appendleft()
queue.pop()
queue = deque() #빈 큐 생성
queue = deque([1,2]) #1,2가 들어가 있는 큐 생성 (왼쪽이 먼저 오른쪽이 나중 순서)
#두개가 똑같음
if a == False:
if not a:
#두개가 똑같음
while len(li) > 0:
while li:
data = list(map(int, input().split()))
a, b, c = map(int, input().split())
array = []
for i in range(n):
array.append(int(input()))
import sys
data = sys.stdin.readline().rstrip()
print(2, end=" ")
print(2, '곱하기', 2)
print(f"정답은 {2*2}입니다")
n, m = map(int, input().split())
graph = []
for i in range(n):
graph.append(list(map(int, input())))
print(graph)
"""
입력형태
3 4
1234
1234
4321
>>> D1 = {1:'a', 2:'b', 3:'c'}
>>> for k in D1.keys():
print (k, D1[k])
1 a
2 b
3 c
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave
statesAndCapitals = {
'Gujarat' : 'Gandhinagar',
'Maharashtra' : 'Mumbai',
'Rajasthan' : 'Jaipur',
'Bihar' : 'Patna'
}
for capital in statesAndCapitals.values():
print(capital)
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
if key in dictionary.keys():
얕은복사: 한쪽의 수정이 다른쪽에 영향을 줌
깊은복사: 둘의 연결이 끊김
#얕은복사
new_list = list(original_list)
new_dict = dict(original_dict)
new_set = set(original_set)
#깊은복사
>>> import copy
>>> xs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zs = copy.deepcopy(xs)
''.join(['h', 'e', 'l', 'l', 'o'])
>>>'hello'
a = [ 1, 2, 3, 4]
print(' '.join(map(lambda x: str(x + 1), a)))
리스트 a에 모든 원소를 1씩 더해서 string으로 변환후 공백으로 join해서 출력
from collections import defaultdict
d = defaultdict(lambda: defaultdict(lambda: -1))
new_d = defaultdict(lambda: [])
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
costs.sort(key=lambda x: x[2] )
## 기준이 2개일 때
scoreArray.sort(key=lambda x:(-x[1], x[0]))
n = 250
min, second = divmod(250, 60)
#min = 4, second = 10
s = "aabbaccc"
#방법1
from collections import defaultdict
result1 = defaultdict(int)
for c in s:
result1[c] += 1
print(result1)
print(dict(result1))
>>defaultdict(<class 'int'>, {'a': 3, 'b': 2, 'c': 3})
>>{'a': 3, 'b': 2, 'c': 3}
#방법 2
result2 = dict()
for c in set(s):
result2[c] = s.count(c)
print(result2)
>>{'b': 2, 'c': 3, 'a': 3}
#방법3
from collections import Counter
result3 = Counter(s)
print(result3)
print(dict(result3))
>>Counter({'a': 3, 'c': 3, 'b': 2})
>>{'a': 3, 'b': 2, 'c': 3}
from itertools import combinations
combi = combinations("abc", 2)
print(list(combi))
>>[('a', 'b'), ('a', 'c'), ('b', 'c')]
import math
n = 4
r = 2
print (math.comb(n, k))
>>6
# 1차원인 경우
li = [1, 2, 3]
a = li[:]
b = li.copy()
# 2차원인 경우
from copy import deepcopy
li2 = [[1,2],[3,4]]
c = deepcopy(li2)
dic = {'a':1, 'b':3, 'c':2}
print(dic.get('a', [])) #1
print(dic.get('d', [])) #[], 존재하지 않는 키를 참조하면 두번째 인자를 돌려줌
print(dic.get('d')) #None, 두번째 인자를 안주면 기본으로 None
dic = {'a':1, 'b':3, 'c':2}
print(max(dic, key=dic.get)) # b
from collections import Counter
li = ['a', 'b', 'b', 'b', 'c', 'c']
counter = Counter(li)
print(counter) #Counter({'b': 3, 'c': 2, 'a': 1})
a = counter.most_common(1)
print(a[0][0]) #b
import sys
sys.setrecursionlimit(300000)