매일 배운 것을 정리하며 기록합니다. 프로그래머스에서 '파이썬을 파이썬답게'강의를 수강하였습니다.
my_list = ['1', '100', '33']
answer = ''.join(my_list)
print(answer)
print(type(answer))
# 110033
# <class 'str'>
n = 5
answer = 'abc'*n
print(answer)
# abcabcabcabcabc
answer= [123, 456]*n
print(answer)
# [123, 456, 123, 456, 123, 456, 123, 456, 123, 456]
import itertools
iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
itertools.product(iterable1, iterable2, iterable3)
# <itertools.product object at 0x7f9f25732c40>
my_list = [[1, 2], [3, 4], [5, 6]]
# 방법 1 - sum 함수
answer = sum(my_list, [])
# 방법 2 - itertools.chain
import itertools
list(itertools.chain.from_iterable(my_list))
# 방법 3 - itertools와 unpacking
import itertools
list(itertools.chain(*my_list))
# 방법 4 - list comprehension 이용
[element for array in my_list for element in array]
# 방법 5 - reduce 함수 이용 1
from functools import reduce
list(reduce(lambda x, y: x+y, my_list))
# 방법 6 - reduce 함수 이용 2
from functools import reduce
import operator
list(reduce(operator.add, my_list))
# 방법 7 - numpy 라이브러리의 flatten 이용
import numpy as np
np.array(my_list).flatten().tolist()
예를 들어 다음과 같은 리스트는 편평하게 만들 수 있고
[[1], [2]]
[[1, 2], [2, 3], [4, 5]]
다음과 같이 같이 각 원소의 길이가 다른 리스트는 편평하게 만들 수 없습니다.
[['A', 'B'], ['X', 'Y'], ['1’]] # 방법 7로 평탄화 불가능
import itertools
pool = ['A', 'B', 'C']
print(list(map(''.join, itertools.permutations(pool)))) # 3개의 원소로 수열 만들기
print(list(map(''.join, itertools.permutations(pool, 2)))) # 2개의 원소로 수열 만들기
import collections
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 7, 9, 1, 2, 3, 3, 5, 2, 6, 8, 9, 0, 1, 1, 4, 7, 0]
answer = collections.Counter(my_list)
print(answer[1]) # = 4
print(answer[3]) # = 3
print(answer[100]) # = 0
mylist = [3, 2, 6, 7]
answer = [i**2 for i in mylist if i %2 == 0]
-파이썬의 for-else 문을 사용하면 코드를 짧게 쓸 수 있고, 그 의미를 알아보기 쉬움
import math
numbers = [int(input()) for _ in range(5)]
multiplied = 1
for number in numbers:
multiplied *= number
if math.sqrt(multiplied) == int(math.sqrt(multiplied)):
print('found')
break
else:
print('not found')
a = 3
b = 'abc'
a, b = b, a
import bisect
mylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect.bisect(mylist, 3))
class Coord(object):
def __init__ (self, x, y):
self.x, self.y = x, y
def __str__ (self):
return '({}, {})'.format(self.x, self.y)
point = Coord(1, 2)
min_val = float('inf')
min_val > 10000000000
# inf에는 음수 기호를 붙이는 것도 가능합니다.
max_val = float('-inf')
with open('myfile.txt') as file:
for line in file.readlines():
print(line.strip().split('\t'))
⨳ with - as 구문은 파일 뿐만 아니라 socket이나 http 등에서도 사용할 수 있습니다.
Reference : [프로그래머스] 프로그래밍 강의 - 파이썬을 파이썬답게