파이썬 함수 정리

Polla·2023년 1월 24일
1

이론

목록 보기
1/1
post-thumbnail

내가 맨날 기억안나서 쓰는 파이썬 함수 정리...


📌 List (리스트)


  • 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)


📌 딕셔너리 (dictionary)


a = {} : 중괄호로 된 모습으로 키와 값이 존재한다.


🥔 Key, Value


  • .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문

  • for _ in range ( , , ) / for _ in iterable : 반복이 가능한 객체나, range 후 초기식, 증감식을 사용하여 반복


🥔 for문에 유용한 함수


  • 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 함수


  • 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

profile
트러블 슈팅 Blog => https://polla.palms.blog/home

0개의 댓글