알아두면 좋은 파이썬 함수

정지호·2022년 8월 14일
0

개인 실습 진행

목록 보기
13/41

파이썬 함수

1. all() 함수

  • 인자로 받은 반복 가능한 자료형(iterable)의 모든 요소가 참이면 True를 반환하는 함수
  • and 의 특징을 지닌 것이라 생각하자
  • 반복가능한 자료형: 리스트, 튜플, 집합, 딕셔너리, 문자열
  • 주의: 자료형이 비어있으면 True 반환

2. any() 함수

  • 인자로 받은 반복 가능한 자료형(iterable) 중 단 하나라도 참이 있으면 True를 반환하는 함수
  • or 의 특징을 지닌 것이라 생각하자
  • 여러 경우를 나타내야 할 경우, 여러 비교를 해야 할 경우 유용하게 쓰일 수 있다.
  • ex)

프로그래머스 42587 프린터

def solution(priorities, location):
    queue = [(i,p) for i,p in enumerate(priorities)]
    answer = 0
    while True:
        current = queue.pop(0)
        if any(current[1]<q[1] for q in queue): # 현재 대기 목록에서 맨 앞의 문서의 중요도가 가장 크지 않을 때
            queue.append(current)
        else: # 맨 앞의 문서의 중요도가 가장 크거나 이보다 큰 중요도가 없다. 
            answer += 1
            if current[0] == location:
                return answer
priorities = [1,1,9,1,1,1]
location = 0
solution(priorities,location)
  • any()를 활용해 크기를 여러 번 비교해야 하는 과정을 한번에 나타내었다.

3. assert

  • 사용방법: assert 조건, 오류메세지 / 괄호 안씀
    ex)
a = 10
assert a==10, "a is not 10"

위의 경우, 조건(a==10)이 참이므로 스무스하게 코드가 지나간다(진행된다)

a=10
assert a==100, "a is not 100"

위의 경우, 조건(a==100)이 거짓이므로 AssertionError가 "a is not 100" 메세지와 함께 발생한다.

4. ord(문자), chr(정수) 함수

  • ord(문자)
    : 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환한다.
    ord('a') == 97

  • chr(정수)
    : 하나의 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환
    chr(97) == 'a'

  • 인덱스 지정에 유용할수도 있다.
    ex)

N = int(input()) # 피연산자 개수 지정
li = list(input()) # 후위 표기식을 터뜨려 리스트화 한 후, map을 활용해 리스트 요소들 문자화
stack = [] # num의 요소들을 집어넣음
nums = [] # 피연산자에 해당하는 값들(알파벳 순서대로)

for i in range(N): 
    nums.append(int(input())) # 피연산자에 해당하는 값들을 입력해넣음

for i in li:
    if i.isalpha(): # isalpha() : 알파벳인지 아닌지 확인하는 함수
        index = ord(i) - ord("A") # ord(문자): 해당문자의 유니코드 정수 반환 / i가 A면 index는 0, B 면 index는 1, C면 2......=> index를 통해 A,B,C 순서로 해당 값들을 지정할 수 있음
        stack.append(nums[index]) # => index를 통해 A,B,C 순서로 해당 값들을 지정할 수 있음(stack 에 차례대로 넣음)
    
    else:
        
        b = stack.pop() # pop에 인자를 전달해주지 않으면 맨 뒤에 요소를 추출한다. 그래서 a 보다 b 먼저 정의.
        a = stack.pop()
     # i가 문자가 아닌 연산기호인 경우, 연산기호에 따라 앞에서 뽑아낸 요소들을 계산하여 stack에넣음   
        if i == "+": 
            stack.append(a+b) 
        elif i == "-":
            stack.append(a-b)
        
        elif i == "*":
            stack.append(a*b)
            
        elif i == "/":
            stack.append(a/b)
    # 연산된 요소는 다른 요소와 연산됨. 최종적으로 하나의 값만이 남게 됨.
print("%.2f" %stack[0]) # 실수이면서 소숫점 둘째 자리까지 출력해야 하므로 "%.2f"를 사용하였다. 

# print(len(stack))
  • 알파벳 순서대로 할당되어야 하는 값들을 ord함수를 활용해 인덱스를 자동으로 지정해주어 할당하였다.

5. strip(), rstrip(), lstrip() 함수

  • strip(문자, 혹은 여러 문자): 인자로 전달된 문자를 왼쪽과 오른쪽에서 제거 (양쪽에서 제거해들어간다)
  • lstrip(문자, 혹은 여러 문자): 인자로 전달된 문자를 왼쪽에서 제거 (왼쪽에서 제거해들어간다)
  • rstrip(문자, 혹은 여러 문자): 인자로 전달된 문자를 오른쪽에서 제거 (오른쪽에서 제거해들어간다)
  1. 이들은 인자를 전달하지 않을 수도 있고, 인자를 전달하지 않을 경우 공백을 제거한다.(제거못하는 것을 만날때까지)
  2. 인자로 문자 1개를 전달하면 그 문자와 동일한 것 모두를 제거한다.(제거못하는 것을 만날때까지)
  3. 인자로 여러 문자를 전달하면 그 문자들과 동일한 것들을 모두 제거한다.(제거못하는 것을 만날때까지)

6. eval() 함수

  • eval(식) : 식(expression)을 문자열로 받아서 실행하는 함수이다.
  • ex) eval("1+2") -> 3 출력 / eval("abs(-8)") -> 8 출력

참고: https://codechacha.com/ko/python-string-strip/#%EC%97%AC%EB%9F%AC-%EB%AC%B8%EC%9E%90-%EC%A0%9C%EA%B1%B0

profile
정지호

0개의 댓글