Python/Python 기본개념

iterable, sequence, divmod,정렬,string모듈,zip(),함수시작,타입변환,이어붙이기join(), 곱집합,2차원리스트1차원리스트로,순열과조합

GLOWWW 2021. 3. 14. 13:38

iterable : 자신의 멤버를 한 번에 하나씩 리턴할 수 있는 객체. list, str, tuple, dict 등
sequence: int 타입 인덱스를 통해, 원소에 접근할 수 있는 iterable 이다. iterable의 하위 카테고리라고 생각하면 된다. list, str, tuple이 여기에 속한다.

divmod()를 사용하면 몫과 나머지를 구해준다. 작은 숫자를 다룰 때는 각각 구하는 것 보다 느리다.
ex)

a = 7
b = 5
print(*divmod(a, b))

n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수

num, base = map(str, input().split())
answer = int(num, int(base))
print(answer)

문자열 정렬하기

s, n = input().strip().split(' ')
n = int(n)
print(s.ljust(n))
print(s.center(n))
print(s.rjust(n))

알파벳 출력하기 - string모듈

import string 

string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.ascii_letters # 대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
string.digits # 숫자 0123456789

zip()함수는 여러 시퀀스를 병렬로 순회할 수 있다. 여러 시퀀스 중 가장 짧은 시퀀스가 완료되면 zip()은 멈춘다.

mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))

i번째 원소와 i+1번째 원소

def solution(mylist):
    answer = []
    for number1, number2 in zip(mylist, mylist[1:]):
        answer.append(abs(number1-number2))
    return answer

if __name__ == '__main__':
    mylist=[83,48,13,4,71,11]
    print(solution(mylist))

type 변환

def solution(mylist):
    answer = []
    answer = list(map(int, mylist))
    return answer

sequence멤버를 하나로 이어붙이기 - join

answer = ''.join(mylist)

곱집합(Cartesian product)
ex)
두 스트링 'ABCD', 'xy' 의 곱집합은 Ax Ay Bx By Cx Cy Dx Dy 입니다.

import itertools

iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
print(list(itertools.product(iterable1, iterable2, iterable3)))

2차원 리스트를 1차원 리스트로 만들기
ex)[['A', 'B'], ['X', 'Y'], ['1']] >>> ['A', 'B', 'X' ,'Y', '1']

def solution(mylist):
    answer = sum(mylist, [])
    return answer

제한적으로 numpy 라이브러리의 flatten을 이용해서 할 수 있는데, 이는 각 원소의 길이가 동일한 경우에만 사용이 가능하다.

import numpy as np
np.array(mylist).flatten().tolist()

순열과 조합
for문을 사용하지 않고 itertools.permutation을 이용할 수 있다.

import itertools
def solution(mylist):
    mylist.sort()
    answer = list(map(list, itertools.permutations(mylist)))
    return answer