python

[python] filter vs map

전감자(◔◡◔) 2022. 9. 26. 20:59

-filter

'''
filter vs map

1.filter(함수,집합형)
    ==>집합형에서 함수를 적용해서 조건에 일치하는 값만 반환

2.filter 함수는 generator함수
'''

#help(filter)
x=[1,2,3,4,5,6,7,8,9,10]
#짝수만 출력 ==> list comprehension으로 구현
result=[i for i in x if i%2==0]
print(result)
def even(n):
    print(n%2==0)
    return n%2==0

even2=lambda n:n%2==0

result = filter(even, x)
result2= filter(even2,x)
result3= filter(lambda n:n%2==0,x) #(**********)
print(list(result))
print(list(result2))
print(list(result3))
 #문제: 1~100 사이값 중에서 5의 배수이면서 60보다 큰 값만 출력하시오

 #filter 사용

result4 = filter(lambda x: x % 5==0 and x > 60,list(range(1, 101)))
print(list(result4)) #[65, 70, 75, 80, 85, 90, 95, 100]

# 문제2: "asdfef1234xhgkasog452" 중에서 알파벳문자만 필터링해서 출력하시오.
result=filter(lambda n:n.isalpha(),"asdfef1234xhgkasog452")
#print(list(result)) <-이거 적으면 출력안됨.filter가 generator 함수여서 그럼
xxx=list(result)
print("".join(xxx))

-map

'''

filter vs map

2. map (함수, 집합형)
==> 집합형의 데이터를 가공하기 위한 함수를 적용
    따라서 원본 데이터의 갯수만큼 반환됨.

'''

print("#"*100)
x=["Abc","He","WEd","Hwang","Ye","vin"]

def my_upper(n):
    return n.upper()

result=map(my_upper,x)
result=map(lambda n : n.upper(),x)

result=map(str.upper,x)
result=map(str.lower,x)
result=map(str.capitalize,x)
print(list(result))
print()

result=map(int,["9","44","2143"])
print(list(result))

result=map(str,[9,44,2143])
print(list(result))

'python' 카테고리의 다른 글

[python] class 중간 정리  (0) 2022.09.26
[python] class 객체생성 | 생성자  (0) 2022.09.26
[python] 변수의 scope | random 함수  (1) 2022.09.26
[python] generator 함수  (1) 2022.09.26
[python] lambda 함수  (0) 2022.09.26