[Python] 기본적인 것들 모음

와다닥·2024년 6월 19일
0

[Python] 문제풀기

목록 보기
3/3
post-custom-banner

*이 글은 이거다 싶을 때마다 수정됨 아마 추가되는 쪽으로...
원래는 내가 자주 까먹는 것만 적으려고 했는데 어쩌다보니 기본 모음집이 됨
기억이 안 나면 이거라도 갈아먹으며 버티렴 미래의 나야


설정

입출력 속도 개선

import sys
input = sys.stdin.readline #입력
output = sys.stdout.write #출력

입출력

여러 값 한번에 입력 받기

#공백으로 구분된 문자 분리
a, b = input().split() 
#in: 1 7 / out: a='1', b='7'

#콤마(,)로 구분된 문자 분리
c, d = input(split(',')) 
#in: 2,3 / out: c='2', d='3'

#공백으로 구분된 문자를 분리하여 숫자로 변환하여 받기
e, f, g = map(int, input().split()) 
#in: 3 4 5 / out: e=3, f=4, g=5

#공백으로 구분된 문자를 분리하여 리스트 형태로 받기
l1 = list(input().split())
#in: very hungry / out: l1=['very', 'hungry']

#공백으로 구분된 문자를 분리하고 숫자로 변환하여 리스트 형태로 받기
l2 = list(map(int, input().split()))
#in: 1 5 5 7 / out: l2=[1, 5, 5, 7]

데이터 타입

리스트(list)

리스트 원소 관리

#리스트 생성
lst = list()
lst = []

#가장 마지막 원소. stack에서 가장 위에 있는 원소 체크할 때도 사용.
lst[-1]

#가장 끝에 원소 추가
lst.append('a')
#before: [1, 2] / after: [1, 2, 'a']

#지정 위치에 원소 추가하고 기존 원소를 뒤로 밀어냄
lst.insert(1, 'chicken')
#before: ['birth', 'death'] / after: ['birth', 'chicken', 'death']

#가장 끝(마지막) 원소 return 및 삭제
lst.pop()
#before: [1, 2, 3] / after: [1, 2]
a = lst.pop()
#before: ['IV', 'V', 'VIII'] / after: ['IV', 'V'], a='VIII'

#원소 삭제
del lst[1]
#before: [3, 1, 4, 1, 5] / after: [3, 4, 1, 5]
del lst[:3]
#before: [3, '.', [1, 4], 1, 5] / after: [1, 5]

#가장 처음으로 나오는 특정 원소 삭제
lst.remove(3)
#before: [2, 3, 2, 3, 4, 5] / after: [2, 2, 3, 4, 5]

리스트 내장 함수

#리스트 원소 개수
len(lst) #int 값으로 반환

#리스트 안 특정 원소 개수 반환
lst.count(2) #int 값으로 반환

#특정 원소가 리스트 내에 있다면 가장 먼저 나오는 해당 원소의 index 값 반환
lst.index(8)
#in: lst = [2, 0, 8, 0, 8] / out: 2
#in: lst = [1, 5, 7, 7] / out: *ERROR*

#sort(). input 받은 리스트 자체를 수정함.
lst.sort() #오름차순
lst.sort(reverse=False) #오름차순
lst.sort(reverse=True) #내림차순

#sorted(). 정렬할 리스트를 parameter로 받고 정렬된 리스트를 return함.
new_lst = sorted(lst, reverse=True)
#lst = ['c', 'd', 'b', 'a'], new_lst = ['d', 'c', 'b', 'a']

#리스트 reverse
lst.reverse()
#before: ['one', 'two', 'three'] / after: ['three', 'two', 'one']

#람다 함수로 다중 조건 정렬
#원소의 idx1을 기준으로 오름차순, idx1이 동일한 경우 idx0을 기준으로 내림차순 정렬
lst = [(1, 2), (2, 4), (0, 0), (3, 1), (5, 1)]
lst.sort(key=lambda k : (k[1], -k[0]))
#out: [(0, 0), (5, 1), (3, 1), (1, 2), (2, 4)]

리스트 슬라이싱(범위)

#리스트 슬라이싱(지정 범위 요소 선택)
lst = [1, 2, 3, 4, 5]
lst[:2] #처음부터 지정 index-1까지
#[0, 1]
lst[2:] #지정 index부터 끝까지
#[3, 4, 5]
lst[2:3] #지정 시작 index부터 지정 끝 index-1까지
#[3]

#특정 범위를 다른 리스트로 교체
lst[1:3] = [123, 456]
#before: [1, 2, 3, 4, 5] / after: [1, 123, 456, 4, 5]
lst[1:3] = [123, 456, 789]
#before: [1, 2, 3, 4, 5] / after: [1, 123, 456, 789, 4, 5]
lst[1:3] = [123]
#before: [1, 2, 3, 4, 5] / after: [1, 123, 4, 5]

리스트의 연산

#리스트 더하기
a = ['i', 'want', 'to']
b = ['go', 'home']
a+b
#['i', 'want', 'to', 'go', 'home']

#리스트 곱하기
c = ['help']
c*5
#['help', 'help', 'help', 'help', 'help']

반복

살면서 도움이 되는 기능

#continue 아래의 코드를 무시하고 다음 반복 sequence로
continue

#아무것도 안 하고 지나감
#not 조건 잔뜩 세울 필요 없이 pass로 해당 없는 경우를 깔쌈하게 넘길 수 있음
pass

#break가 소속된 해당 반복 루프에서 탈출함
#루프1 안에 루프2가 있고 루프2 안에 break가 있으면 루프2만 깨지고 루프1은 여전히 돌아감
break

for문(range 포함)

#range((start==0), end, (every==1))
range(4)
#0, 1, 2, 3

range(-1, 6)
#-1, 0, 1, 2, 3, 4, 5

range(1, 10, 2)
#1, 3, 5, 7, 9

range(10, 1, -2)
#10, 8, 6, 4, 2

연산

삼항연산자

#a와 b가 같으면 True를, 아니면 False를 result에 할당
result = True if a==b else False

#print문에 응용, a==b면 a+b를 출력, 아니면 a*b를 출력
print(f"{a+b if a==b else a*b}")
#in: a=1, b=3 / out: 3
#in: a=3, b=3 / out: 6

기타

프로그램 강제 종료(kill)

exit(0)
profile
I can't die I'm ALL IN
post-custom-banner

0개의 댓글