본문 바로가기
SK 행복성장캠퍼스/Python 기초

0904_5일차_함수_유틸리티 함수

by NickNuma 2020. 9. 7.

자주 사용 가능한 함수 설명입니다.


1. abs() ==> 절대값

print("1. 절대값:", abs(10), abs(-100))        # 1. 절대값: 10 100

 

2. sum() ==> 합계

print("2. 합계:", sum([10, 20, 30]))           # 2. 합계: 60

 

3. sum() / len() ==> 평균

print("3. 평균:", sum([10, 20, 30]) / len([10, 20, 30]))  # 3. 평균: 20.0

 

4. max() ==> 최댓값, (dict의 경우 key값의 최댓값)

print("4. 최대값:", max([10, 20, 30, 40]))     # 4. 최대값: 40

 

5. min() ==> 최솟값, (dict의 경우 key값의 최솟값)

print("5. 최소값:", min([10, 20, 30, 50]))     # 5. 최소값: 10

 

6. sorted() ==> dict 정렬, 원본값 변화 x, 새로운 변수에 저장

sorted_m_dict = sorted(m_dict)
print("8. dict 정렬:", sorted_m_dict)            # 8. dict 정렬: [5, 10, 20]

 

7. round() ==> 반올림, 소숫점을 지정 안 하면 정수 표기

print("9. 반올림:", round(4.879))     # 5 # 소수점 지정 안 하면 정수로 표기

 

7. round(반올림할 수, 소숫점 자리) ==> 반올림, 소숫점 자리를 지정해줌

print("9. 반올림:", round(4.879, 2))  # 4.88 # 소수점 2자리로 표기

 

8. char() ==> 아스키코드에 해당되는 문자 반환

print("10. 아스키코드에 해당되는 문자 반환:", chr(65), chr(97))   # 10. 아스키코드에 해당되는 문자 반환: A a

 

9. ord() ==> 문자에 해당되는 아스키코드 반환

print("10. 문자에 해당되는 아스키코드 반환:", ord('A'), ord('a'))   # 10. 문자에 해당되는 아스키코드 반환: 65 97

 

10. shuffle() ==> 문자를 랜덤한 순서로 섞어서 반환

# 2. shuffle 기능
x = ['a', 'b', 'c']
random.shuffle(x)
print(x)        # ['b', 'c', 'a']

 

11. random() ==> 랜덤값 얻기

# 1. 랜덤값 얻기
import random
result = random.randrange(0, 3)
print(result)			# 1

 

12. random.choice() ==> 임의값 추출

# 3. 임의값 추출
print(random.choice(x))

 


filter 함수 => 리스트에서 조건에 일치하는 값만 filtering해서 반환하는 함수
리스트의 값하나씩 함수에 대입하여 조건식을 만족하면 필터링 통과
문법(Syntax) : filter ( 함수객체(함수명), [ 리스트 ] ) ==> 시스템의 함수 호출 (콜백 함수 호출 형태)

map 함수 => 리스트에서 특정 함수를 적용해서 반환하는 함수
문법(Syntax) : result = map( 함수명, 리스트 )  ==>  시스템의 함수 호출 (콜백 함수 호출 형태)

"""
    1) filter 함수
        ==> 리스트에서 조건에 일치하는 값만 필터링해서 반환하는 함수     # 리스트의 값을 하나씩 함수에 넣어서 조건식을 만족하면 필터링 통과
            문법(Syntax) : 
                fliter(  함수객체(함수명)  , [ 리스트 ] )     ==> 시스템의 함수 호출 ( 콜백 함수 호출 형태)  
                ## (error,X) filter ( 함수(), [리스트] )       ==> filter 함수를 사용하면서 우리가 함수를 호출함. X
    
    2) map 함수
        ==> 리스트에서 특정 함수를 적용해서 반환하는 함수
            문법(Syntax) : 
                result = map( 함수명, 리스트 )    ==> 시스템의 함수 호출 ( 콜백 함수 호출 형태)      

"""

 


1. filter 함수

# 가. 일반 함수 이용
def even_num(n):        # 짝수인지 아닌지 bool값으로 넘겨주는 함수
    return n % 2 == 0

result = list(filter(even_num, range(1, 11)))      # 1 ~ 10의 리스트에서 짝수 함수를 이용해 짝수만 필터링
# result = tuple(filter(even_num, range(1, 11)))    #그냥 형변환 한 거
# result = set(filter(even_num, range(1, 11)))
print("가. filter 함수(일반함수 이용) :", result)    # 가. filter 함수(일반함수 이용) : [2, 4, 6, 8, 10]

# 나. 람다 함수 이용
even_num2 = lambda n : n % 2 == 0
result = list(filter(even_num2, range(1, 11)))              # 람다 함수를 변수에 넣은 방법
result = list(filter(lambda n : n % 2 == 0, range(1, 11)))  # 권장 방법 = 람다 함수를 바로 쓰는 방법
print("나. filter 함수(람다함수 이용) :", result)    # 나. filter 함수(람다함수 이용) : [2, 4, 6, 8, 10]
print("")
# 질문 1
"""
    다음과 같이 제공된 리스트에서 알파벳만 반환하는 코드를 작성하시오.
"""

m = "asdf123aeAbdec4333"

# 가. 일반함수 이용
def alpha1 (n):
    return n.isalpha()

result = list(filter(alpha1, m))
print("질문 답(일반 함수 이용):", result)  # 질문 답(일반 함수 이용): ['a', 's', 'd', 'f', 'a', 'e', 'A', 'b', 'd', 'e', 'c']
print("join함수를 이용해서 문자열로 변환:", "".join(result))     # join함수를 이용해서 문자열로 변환: asdfaeAbdec

# 나. 람다함수 이용
result = list(filter(lambda n : n.isalpha(), m))
print("질문 답(람다 함수 이용):", result)  # 질문 답(람다 함수 이용): ['a', 's', 'd', 'f', 'a', 'e', 'A', 'b', 'd', 'e', 'c']
print("join함수를 이용해서 문자열로 변환:", "".join(result))     # join함수를 이용해서 문자열로 변환: asdfaeAbdec

 


2. map 함수

def upper_case1(m):
    return m.upper()

result = list(map(upper_case1, ['abC', 'Eva', 'Hello']))
print("가. 대문자 적용(일반 함수 사용):", result)   # 가. 대문자 적용(일반 함수 사용): ['ABC', 'EVA', 'HELLO']

result = list(map(lambda n : n.upper(), ['abC', 'Eva', 'Hello']))
print("나. 대문자 적용(람다 함수 사용):", result)   # 나. 대문자 적용(람다 함수 사용): ['ABC', 'EVA', 'HELLO']
# 질문 2
"""
    다음과 같은 정수형의 문자열 리스트를 모두 정수로 변환하여 출력하시오.
"""
# def tran_int(m):          # 사용자 정의 함수 없이 그냥 int()로 해도 됐다. 하하하.
#     return int(m)
#
# result = list(map(tran_int, ["12", "44", "55"]))
result = list(map(int, ["12", "44", "55"]))     #*****
print("다. 일반 함수로 정수 변환 적용:", result)    # 다. 일반 함수로 정수 변환 적용: [12, 44, 55]

result = list(map(lambda n : int(n), ["12", "44", "55"]))       # 이 상황에는 람다 함수도 필요가 없다. 이미 패키지에 함수가 있으니까.
print("라. 람다 함수로 정수 변환 적용:", result)    # 라. 람다 함수로 정수 변환 적용: [12, 44, 55]
# 질문 3
"""
    다음과 같은 정수형의 정수형 리스트를 모두 문자열로 변환하여 출력하시오.
"""

result = list(map(str, [9, 8, 7, 10]))     #*****
print("마. 일반 패키지 함수로 문자열 변환 적용:", result)   # 마. 일반 패키지 함수로 문자열 변환 적용: ['9', '8', '7', '10']
# 질문 4
"""
    다음과 같은 문자열 리스트에서 문자열의 길이를 변환하여 출력하시오.
"""

result = list(map(len, ["홍길동", "세종대왕", "광개토대왕"]))
print("사. 일반 패키지 함수로 문자열 길이 변환 적용:", result)    # 사. 일반 패키지 함수로 문자열 길이 변환 적용: [3, 4, 5]

 


any()  :  집합형의 데이터 중에서 일부분의 데이터 True인 값을 가지고 있는지 확인
all()    :  집합형의 모든 데이터 True인 값을 가지고 있는지 확인

print("13. all 1, 모든 데이터가 True 인가요?:", all([True, False, True]))
# 13. all 1, 모든 데이터가 True 인가요?: False

print("13. all 2, 모든 데이터가 True 인가요?:", all(["aa", 10, [1, 23]]))
# 13. all 2, 모든 데이터가 True 인가요?: True

print("14. any, 데이터 중 True 값이 1개라도 있나요?:", all([True, False, True]))
# 14. any, 데이터 중 True 값이 1개라도 있나요?: False
#질문 : 다음 제공된 리스트 값이 모두 10보다 작은가?
list_data = [1, 43, 5, 7, 3, 6]
result = all([ n < 10 for n in list_data])
print("다음 제공된 리스트 값이 모두 10보다 작은가?>",  result )
# 다음 제공된 리스트 값이 모두 10보다 작은가?> False
# 질문 : 다음 제공된 리스트 값 중에서 3보다 작은 값이 있는가?
list_data = [1, 3, 5, 2, 76]
result = [n for n in list_data if n < 3]    ## list comprehension 다시 봐야할 듯?!
print(result)
# [1, 2]
print("다음 제공된 리스트 값들은 모두 3보다 작은가?>",  all(result) )
# 다음 제공된 리스트 값들은 모두 3보다 작은가?> True
result = [ n <= 3 for n in list_data]
print(result)       # [True, True, False, True, False]
result = any([ n <= 3 for n in list_data])
print("다음 제공된 리스트 값 중에서 3보다 작은 값이 있는가?>",  result )
# 다음 제공된 리스트 값 중에서 3보다 작은 값이 있는가?> True

파이썬을 사용하면서 자주 사용하게되는 함수 정리입니다.
자주 사용될 예정이니 이 정도는 외워놓는 것이 좋을 것 같습니다.

그럼 이만~

반응형

'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글

0904_5일차_연습문제  (0) 2020.09.07
0904_5일차_함수_클래스  (0) 2020.09.07
0904_5일차_함수_람다함수  (0) 2020.09.07
0903_4일차_연습문제  (0) 2020.09.06
0903_4일차_함수_일급객체  (0) 2020.09.06

댓글