내가 맨날 기억안나서 쓰는 파이썬 함수 정리...
a = [ ]
식으로 사용. .append()
: 리스트에 요소를 추가, 맨 끝에 요소가 추가
```python
a = [3, 4, 6, 7]
a.append(3)
print(a) # [3, 4, 6, 7, 3]
```
.insert()
: 리스트에 요소를 원하는 위치에 추가
a = [3, 4, 6, 7]
a.insert(2, [5, 6])
print(a) # [3, 4, [5, 6], 6, 7]
.extend()
: 리스트에 iterable
(순환적인) 요소를 추가
a = [3, 4, 6, 7]
a.extend([5, 6])
print(a) # [3, 4, 6, 7, 5, 6]
+연산자
: 리스트 끼리 더하기
```python
a = [3, 4, 6, 7]
b = [10, 9, 8]
print(a + b) # [3, 4, 6, 7, 10, 9, 8]
```
del()
: 특정 인덱스의 요소를 삭제
a = [3, 4, 6, 7]
del(a[3])
print(a) # [3, 4, 6]
.remove()
: 맨 앞에 있는 특정 요소를 삭제
a = [3, 3, 3, 4, 6, 7]
a.remove(3)
print(a) # [3, 3, 4, 6, 7]
a [: :]
: 시작과 끝 인덱스와, 몇개씩 띄어넘을지도 설정 가능
a = [3, 3, 3, 4, 6, 7, 8 , 9]
print(a[2:7:2]) # [3, 6, 8]
.split()
: 요소가 문자열일 경우 ( ) 안을 기준으로 자른다.
a = ['hello world!', 'this is my blog']
a = a[0].split()
print(a) # ['hello', 'world!']
split() 후, a[::-1]을 사용하면 reverse가 가능!
.index()
: 리스트 안의 맨 처음 찾은 해당 요소의 index
번호를 return한다.
a = [1, 3, 4, 5, 6, 7, 8, 3]
print(a.index(3)) # 1
.count()
: 리스트 안 요소의 개수를 return한다.
a = [1, 3, 4, 5, 6, 7, 8, 3]
print(a.count(3)) # 2
in
/ not in
: 리스트 안에 해당 요소가 들어가있는지 확인한다.
a = [1, 3, 4, 5, 6, 7, 8, 3]
print(3 in a) # True
print(3 not in a) # False
.pop()
: 리스트의 마지막 요소를 꺼내고 리스트 안 해당 요소는 삭제한다.
a = [1, 3, 4, 5, 6, 7, 8]
b = a.pop()
print(b) # 8
print(a) # [1, 3, 4, 5, 6, 7]
.sort()
/ sorted()
: 요소를 오름차순으로 정렬
sort() : 오름차순으로 정렬하되, 원본 데이터를 변경, None을 return
sorted() : 오름차순으로 정렬하되 원본 데이터는 유지, 정렬한 리스트를 return
sorted(a , reverse = True ) : 내림차순으로 정렬
a = [8, 3, 4, 1, 2, 6, 9]
b = sorted(a)
c = sorted(a, reverse = True)
print(b, a) # [1, 2, 3, 4, 6, 8, 9] [8, 3, 4, 1, 2, 6, 9]
print(b, c) # [1, 2, 3, 4, 6, 8, 9] [9, 8, 6, 4, 3, 2, 1]
b = a.sort()
print(b, a) # None [1, 2, 3, 4, 6, 8, 9]
reversed()
: 현재 리스트의 역순을 갖는 배열 생성, 출력 방식 입력 필요. a = [8, 3, 4, 1, 2, 6, 9]
b = list(reversed(a))
print(a, b) # [8, 3, 4, 1, 2, 6, 9] [9, 6, 2, 1, 4, 3, 8]
max()
/ min()
: 최댓값, 최소값을 출력 a = [8, 3, 4, 1, 2, 6, 9]
print(max(a), min(a)) # 9 1
sum()
: 리스트 안 요소들의 합을 출력 a = [8, 3, 4, 1, 2, 6, 9]
print(sum(a)) # 33
divmod()
: 몫과 나머지를 한번에 출력 print(divmod(9, 2)) # (4,1)
a = {}
: 중괄호로 된 모습으로 키와 값이 존재한다.
.keys()
/ .values()
: Key 혹은 Value 값만 뽑기, list 형태를 원하는 경우 list로 감싸야함 a = {1: 'Python', 2:'C', 3: 'PHP'}
print(a.keys(), a.values())
# dict_keys([1, 2, 3]) dict_values(['Python', 'C', 'PHP'])
.items()
: 딕셔너리값 쌍으로 묶어서 뽑기 a = {1: 'Python', 2:'C', 3: 'PHP'}
print(a.items())
# dict_items([(1, 'Python'), (2, 'C'), (3, 'PHP')])
a[] = 'b'
: 딕셔너리 값 바꾸기
a = {1: 'Python', 2:'C', 3: 'PHP'}
a[1] = 'java'
print(a) # {1: 'java', 2: 'C', 3: 'PHP'}
for _ in range ( , , )
/ for _ in iterable
: 반복이 가능한 객체나, range 후 초기식, 증감식을 사용하여 반복
enumerate()
: 반복문의 인덱스 번호를 함께 튜플로 return
for _, _ in enumerate(_ , start = x) 식으로 사용 가능
a = ['Python', 'PHP', 'C', 'Java']
for i, j in enumerate(a, start = 100):
print(i,j)
# 100 Python
# 101 PHP
# 102 C
# 103 Java
for _,_ in x.items()
: 딕셔너리 출력 가능
print(x, end = '') 사용할 시 한줄로 출력
a = {1: 'Python', 2:'C', 3: 'PHP'}
for i,j in a.items():
print(i, j, end = '')
# 1 Python2 C3 PHP
zip()
: 리스트 2개를 동시에 for문을 돌리고 싶은 경우 사용 a = [3, 4, 5, 6]
b = [1, 4, 7, 2]
for i,j in zip(a, b):
print(i*j , end = ', ') # 3, 16, 35, 12,
lambda :
def와 같이 함수를 짜준다. 두가지 방법 가능 print((lambda x, y: x + y)(10,5))
# 15
a = lambda i, j : i * j
print(a(2, 3))
# 6
map(function, iterator)
: 함수를 적용 후 map 형식으로 반환, iterator은 2개 이상 가져오기가 가능하다.
input().split과 결합하여 int형으로 한번에 바꾸기도 가능하다.
a, b = map(int, input().split())
a= [3, 5, 6, 7]
b = list(map(lambda i, j : i * j , range(5), a))
print(b) # [0, 5, 12, 21]
filter(function, iterator)
: 말그대로 iterator한 값에다가 function을 적용한 값으로 필터링 하여 return 합니다. a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(filter(lambda x : x % 2==0, a)))
# [2, 4, 6, 8, 10]
' '
: '' 혹은 "" 로 묶은 열
+
/ *
: 두개 혹은 그 이상의 문자열을 연결해준다. a = 'Hello'
b = ' World!'
print(a + b, a * 2) # Hello World! HelloHello
len()
: 문자열의 길이를 구한다. a = 'Hello'
print(len(a)) # 5
a[:]
: 리스트와 마찬가지로 인덱스 순서를 통해 자르기 가능 a = 'Hello'
print(a[1:4]) # ell
split()
: ( )를 기준으로 문자열을 잘라서 list 형식으로 return a = 'Hello World!'
print(a.split()) # ['Hello', 'World!']
.count()
: 문자열 안 특정 숫자의 개수를 return a = 'Hello World!'
print(a.count('l')) # 3
Counter()
: list 내의 특정 개수를 return
Counter(x).most_common(n) : 상위 n개의 요소 출력 Counter(x) -/+ Counter(y) : 요소들끼리의 합집합 출력 Counter(x) & Counter(y) : 요소들 끼리의 교집합 출력 Counter(x) | Counter(y) : 요소들 중 큰 값의 요소 출력 Counter(x).elements : 요소들을 개수만큼 모두 출력 list(Counter(x)): 요소들을 개수 상관없이 하나씩 출력
from collections import Counter
a = 'Hello World!'
print(Counter(a))
# Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ' ': 1,
# 'W': 1, 'r': 1, 'd': 1, '!': 1})
in
/ not in
: 문자열 안 특정 요소가 존재하는 지 확인 a = 'Hello World!'
print('l' in a) # True
print('b' in a) # False
.find()
/ .index()
: 특정 요소를 찾아 처음으로 나온 위치의 인덱스 return a = 'Hello World!'
print(a.find('l')) # 2
"".join()
: 각각의 문자열 사이에 " "를 삽입 a = 'Hello World!'
print("-".join(a)) # H-e-l-l-o- -W-o-r-l-d-!
a = ['h', 'e', 'l', 'l', 'o']
print("".join(a)) # hello
upper()
/ lower()
: 문자열을 대문자 혹은 소문자로 변경 a = 'Hello World!'
print(a.upper(), a.lower()) # HELLO WORLD! hello world!
strip()
/ lstrip()
/ rstrip()
: 공백을 삭제 a = ' Hello World! '
print(a.strip(), a.lstrip(), a.rstrip())
# Hello World! Hello World! Hello World!
.title()
/ .capitalize()
: 문자열의 첫글자를 / 첫 글자의 첫 문자만 대문자로 변경 후 나머지는 소문자 로 변경 a = 'hello world! '
print(a.title(), a.capitalize())
#Hello World! Hello world!
isdigit
/ isalpha
: 해당 요소 혹은 문자열이 숫자/알파벳인지 확인 맞을시 True 반환 a = 'helloworld'
print(a.isdigit(), a.isalpha()) # False, True
.replace( , , )
: 해당 요소를 다른 요소로 대체
replace('a', 'b' , 1) 식으로 마지막에 숫자(count)를 넣을 경우 해당 번호
숫자 만큼만 변경을 진행
a = 'hello world'
print(a.replace('l', 'p')) # heppo worpd
.center()
: 문자열을 주어진 폭을 기준으로 중앙에 배치, 두번째 인자에 채울 요소도 넣기가 가능 a = 'hello world'
print(a.center(15, '3')) # 33hello world33
.rjust(), .ljust()
: 문자열을 주어진 폭을 기준으로 왼/오 에 배치. 두번째 인자에 채울 요소를 넣기도 가능 a = 'hello world'
print(a.rjust(15, '-'), a.ljust(15, '!'))
# ----hello world hello world!!!!
.zfill()
: 문자열을 원하는 길이만큼 늘린후 왼쪽에 0을 채움 a = 'hello world'
print(a.zfill(15)) # 0000hello world
정규 표현식
: 문자열 치환과 같은 처리에 사용하는 기법 import re # 정규 표현식 모듈 제공
re.compile()
: 정규식 객체를 리턴 import re
a = 'hi everyone ! ~~ hello~ World...'
compiled = re.compile('W....')
print(compiled.findall(a))
# ['World']
re.match(패턴, x)
: 해당 문자열의 앞부분이 패턴과 매치되는지를 확인- .start()/.end()/.span() : 매치된 위치를 출력 - .group() : 매치된 문자열을 출력 - .groups() : 각 그룹의 문자열을 묶어 출력
import re
a = 'hi everyone ! ~~ hello~ World...'
b = re.match('[a-z]+',a)
print(b.start(), b.end(), b.span(), b.group())
# 0 2 (0, 2) hi
re.search()
: 문자열의 앞부분, 중간 상관 없이 패턴과 매치되는지를 확인 import re
a = 'hi everyone ! ~~ hello~ World...'
print(re.search('e+', a))
# <re.Match object; span=(3, 4), match='e'>
print(re.match('e+', a))
# None
re.sub(패턴, 치환할 문자, x)
: 매치된 부분을 치환 import re
a = 'maratang jongang shiru namnam'
print(re.sub('m', '' ,a))
# aratang jongang shiru nana
re.findall()
: 문자열과 패턴이 매치되는 모든 부분을 찾는다. import re
a = 'hi everyone ! ~~ hello~ World...'
print(re.findall('e+', a))
# ['e', 'e', 'e', 'e']
[]
: 문자 클래스로 '[' 와 ']' 사이의 문자중 하나를 선택한다.- '[a,b,c]' : a,b,c 중 하나라도 일치하면 매칭 - '-' : 예를 들어 '[a-z]' 일경우 소문자 알파벳 모두를 일컷는다. - [^] : 부정 not을 의미한다. 해당 문자열이 매칭이 안되는 경우를 가져온다
import re
a = 'hi! hello~11 World...3'
print(re.findall('[0-9]', a))
# ['1', '1', '3']
.
: \n을 제외한 모든 문자와 매치된다. import re
a = 'hi! hello~11 World...3'
print(re.findall('h..', a))
# ['hi!', 'hel']
print(re.sub('h..','', a))
# lo~11 World...3
x*
: 앞 문자가 0개이거나 그 이상이여야 매칭 import re
a = 'hello world aho ao ahho'
print(re.sub('ah*o', '' ,a))
# hello world
x+
: 앞 문자가 최소 1번 이상이여야 매칭 import re
a = 'hello world aho ao ahho'
print(re.sub('ah+o', '' ,a))
# hello world ao
{n}
: 앞 문자를 얼마나 반복될지 횟수를 결정 import re
a = 'hello world aho ao ahho'
print(re.sub('ah{2}o', '' ,a))
# hello world aho ao
x?
: 앞 문자가 있어도 되고 없어도 된다. == {0, 1} import re
a = 'hello world aho ao ahho'
print(re.sub('ah?o', '' ,a))
# hello world ahho
x|x
: OR을 의미한다. import re
a = 'hello world aho ao ahho'
print(re.sub('a|o', '' ,a))
# hell wrld h hh
^x
/x$
: 문자열의 시작 혹은 끝 이 해당 문자로 시작하면 매칭
import re
a = 'hhhhello world aho ao hho'
print(re.sub('^h+', '' ,a)) # ello world aho ao hho
print(re.sub('o$','',a)) # hhhhello world aho ao ahh
\
: 메타 클래스 혹은, 메타 문자를 일반 문자로 변경
- \d : 숫자 - \w : 문자 ( _ 포함) - \W : 숫자, _를 제외한 나머지 문자 - \D : 숫자를 제외 - \b : 단어의 시작과 끝에 있는 공백 (사용시 'r\b'와 같이 사용) - \B : 단어의 시작과 끝 외에 있는 공백 (사용시 'r\B'와 같이 사용)
( 추가중.. from itertools import accumulate