개발새발

자주 헷갈리는 Python 문법, 내장함수 사용법 본문

코딩테스트/Python

자주 헷갈리는 Python 문법, 내장함수 사용법

allkites 2024. 6. 19. 13:10

1. sort() vs sorted()

list = [2, 3, 1]
list.sort()
print(list)  #[1,2,3]

list2 = [2, 3, 1]
b = sorted(list)
print(b)  #[1, 2, 3]
  1. 리스트.sort() :: 원본의 값 직접 수정 VS sorted(리스트) :: 새로운 리스트 값 반환
  2. 역순 정렬을 위해서는 sort(reverse=True) / sorted(reverese=True)
  3. 튜플 정렬
    1. 첫번째 원소 오름차순 a.sort(key=lambda x:x[0])
    2. 첫번째 원소 내림차순 a.sort(key=lambda x:-x[0]) or a.sort(key=lambda x:x[0], reverse=true)
    3. 두번째 원소 오름차순 a.sort(key=lambda x:x[1])
    4. 두번째 원소 내림차순 a.sort(key=lambda x:-x[1]) or a.sort(key=lambda x:x[1], reverse=true)
    5. 첫번째 내림차순, 두번째 오름차순 a.sort(key=lambda x : (-x[0],x[1]))

 

2. 문자열에서 특정 기호 세기

  1. s = “1234”에서 1의 갯수는? s.count(”1”)
def solution(s):
    cnt = 0
    answer = 0
    while s != "1":
        if "0" in s:  # 특정 갯수 세기
            cnt += s.count("0") #  문자열 일부를 공백으로 변경하기
            s = s.replace("0", "")  # 10진수를 2진수로 변환하기 0b1101 이런 형태로 출력됨 [2:] 사용해 자르기
        s = bin(len(s))[2:]
        answer += 1

    return answer, cnt

 

3. deque 사용

from collections import deque
deque.append()
deque.appendleft()
deque.pop()
deque.popleft()
deque.rotate() // 양수면 시계방향 회전, 음수면 반대방향 회전

3-1. heapq 사용

import heapq

def solution(n, works):
    works = [-w for w in works] # '-' 사용시 최댓값 정렬
    heapq.heapify(works)
    for _ in range(n):
        i = heapq.heappop(works)
        i += 1
        heapq.heappush(works, i)
    
    return sum([w ** 2 for w in works])
deque -선입선출- BFS
from collections import deque
q=deque()
q.append('l')
q.popleft()
heapq -최소힙, 최대힙-다익스트라, 최소값이나 최대값을 빨리 찾아야 할 때
from heapq import heappush, heappop, heapify
q=[]
heappush(q, 1)
heappop(q)
heapify(arr)

 

4. 배열의 부분집합 구하기

import itertools
itertools.permutations(arr, 2) -> 조합 : n개를 뽑아 만들 수 있는 집합의 종류
itertools.combinations(arr, i) -> 순열 : 가능한 모든 집합의 종류

arr = list(combinations([], 2)) list로 구해야 출력가능

 

5. 딕셔너리 사용

# 딕셔너리 값 추가
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}

# 딕셔너리 키값, 밸류값 출력
a.keys()
a.values()
a.items()

# 딕셔너리 밸류값으로 정렬
sorted(d.items(), key=lambda x: x[1])

# 딕셔너리 값 삭제
del a['name']

# 딕셔너리 초기화
res = dict(a)
a = res = {1: 'a', 2: 'b', 'name': 'pey'}

 

6. 파이썬 중복 제거

set([리스트]) = {}

list(set([리스트])) = [] :: 리스트 형태로 출력

 

7. 숫자 or 문자 여부 판별

str.isdigit() / str.isalpha() 

 

8. 대소문자 변환

str.islower() / str.isupper = bool, str.lower() / str.upper() 

Comments