study/python

코테에서 자주 쓰는 파이썬 문법 - 자료형,리스트 합치기

jjikky 2024. 1. 3. 19:19
반응형

이 글은 본인의 입장에서 알고 있는 것들은 배제하고 잊고 있던 파이썬 특성을 기억을 되새기기 위한 지극히 주관적인 기록입니다.

파이썬에 대한 이해도가 거의 없는 분이 보시기에는 상당히 불친절한 글이라는 점 알려드립니다ㅜㅜ

자료형

리스트

크기 지정 리스트 초기화

a = [0]*n     # [0,0,0,0,0,0,0,0,0,0]

 

리스트 컴프리헨션

arr = [i for i in range(10)]    # [0,1,2,3,4,5,6,7,8,9]

arr = [i for i in range(10) if i%2==1 ]    # [1,3,5,7,9]

# NxM 크기의 2차원 리스트 초기화
n=4
m=3
arr = [[0]*m for _ in range(n)]   # [[0

 

리스트 관련 메서드

  • append : O(1)
  • sort : O(nogn)
  • reverse() : O(n)
  • insert(위치,값) : O(n)
  • count(특정값) : O(n)
  • remove(특정값) : O(n)

리스트에서 특정 값을 가지는 원소 모두 제거하기

arr = [1,2,3,4,5,5,5]
remove_set={3,5}

resullt = [i for i in arr if i not in remove_set]

 

 

문자열

  • 특정 인덱스의 값 변경 불가 - Immutable(변경 불가능한)
  • 따옴표 사용
  • 백 슬래시를 사용하면, 따옴표를 원하는 만큼 포함 가능
print("친구가 말했다. \"달은 네모야!\"")

 

 

튜플

  • 한 번 선언 된 값 변경 불가
  • 다른 성질의 데이터를 묶어서 관리 할 때 사용

 

딕셔너리

  • 키와 값의 쌍을 데이터로 가지는 자료형
    • 해시 테이블을 이용하므로 데이터 조회 및 수정에 있어서 O(1) 시간에 처리 가능!
  • 변경 불가능한 자료형을 키로 사용
  • keys(), values() 함수
data = dict()
data['사과'] = 'apple'
data['바나나'] = 'banana'
key_list = data.keys()
value_list = data.values()

 

 

set - 집합

  • 중복x , 순서x
  • 조회, 수정 O(1)

집합 연산

a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
#합집합 print(a|b)
#교집합 print(a&b)
#차집합 print(a-b)

 

set 자료형 함수

data = set([1,2,3]) 
#원소 추가 
data.add(4) 
#원소 여러개 추가 
data.add([5,6]) 
# 특정 값 원소 삭제 
data.remove(3)

 

 

 


 

 

두 개의 숫자형 리스트 합치기

list1=[1,2,3,4]
list2=[2,3,4,2]
result = map(lambda a,b:a+b, list1, list2) #[3,5,7,6]

 

 

 

실전에서 유용한 표준 라이브러리

  • itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능 제공
    • 특히 순열과 조합 라이브러리 코테에서 자주 사용
      • 순열 - 순서를 고려(일렬로 나열)
      from itertools import permutations
      data=['A','B','C']
      result = list(permutations(data,3)) # 모든 순열 구하기
      
      • 조합 - 순서를 고려 x
      from itertools import combinations
      data=['A','B','C']
      result = list(combinations(data,2)) #2개를 뽑는 모든 조합 구하기 3C2
      # [('A','B'),('B','C'),('A','C')]
      
      • 중복 순열과 중복 조합
      from itertools import product
      data=['A','B','C']
      result = list(product(data,repeat=2)) # 2개를 뽑는 모든 순열 구하기 (중복 허용)
      
      from itertools import combbinations_with_replacement
      data=['A','B','C']
      result = list(combinations_with_replacement(data,2)) # 2개를 뽑는 모든 조합 구하기 (중복 허용)
      
  • heapq : 힙 자료구조 제공
    • 일반적으로 우선순위 큐 기능 구현을 위해 사용
  • bisect : 이진탐색 기능 제공
  • collections : 덱(deque), 카운터 등의 자료구조 포함
    • counter
    from collections import Counter
    counter = Counter(['red','blue','red','green','blue','blue'])
    print(counter['blue']) # blue가 등장한 횟수
    print(dict(counter))
    # {'red':2,'blue':3,'green':1}
    
  • math
    • 팩토리얼, 제곱근, 최대공약수, 삼각함수, pi
      • 최대공약수(gcd), 최소공배수(lcm)
    import math
    
    # 최소 공배수 LCM 구하는 함수
    def lcm(a,b):
    	return a*b//math.gcd(a,b);
    a=21
    b=14
    
    print(math.gcd(21,14)) # 최대공약수 계산
    print(lcm(21,14) # 최소 공배수 계산
    
반응형