반응형

1. lambda 익명 함수: 한줄로 구현하게 해주는 함수 (with map, reduce)

 

일반적인 함수는 아래처럼 구현하고 호출한다.

def hap(x,y):
return x+y

hap(2,5) # 2+5 = 7 return

lambda 함수를 이용하여 함수를 구현하면 아래처럼 사용 가능하다.

(lambda x,y: x+y)(2,5) # return 7

 lambda함수 내에서 조건문 사용 가능하다.

a = lambda x, y: x*y if x>0 else y

a(4, 8) # 32
a(-4, 8) # 8

 

 

다른 내장함수와의 활용

 

1. map

rambda는 map 함수와 함께 쓰면 기능이 확장될 수 있다.

map 이란 map(함수, 리스트) 형태로 사용이 가능하다.

list(map(lambda x: x**2, range(5)))
[0, 1, 4, 9, 16]

2. reduce

 

rambda는 reduce(함수, 시퀀스) 형태로 사용 가능하다.

여기서 시퀀스란 문자열, 리스트, 튜플 등을 의미한다.

reduce(lambda x, y: x+y, range(5))
0+1+2+3+4 = 10 return
reduce(lambda x, y: y+x, 'abcde')
edcba 역순으로 return

3. filter

rambda는 filter (함수, 리스트) 형태로 사용 가능하다.

리스트에 들어있는 원소들을 함수에 적용시켜 결과가 참인 값들로 새로운 리스트를 만들어 준다.

list(filter(lambda x: x<5, range(10))
[0, 1, 2, 3, 4] # 5 미만의 값만 필터링 됨.

list(filter(lambda x: x%2 != 0, range(10)))
[1, 3, 5, 7, 9] # 홀수 값만 필터링 됨.

 

4. max, min

key를 이용해 리턴할 값의 기준을 정한다.

strings = ["abc", "abcdef", "abcedfgh"]
longest = max(strings, key = lambda x:len(x))

numbers = [1, 10, 100, 1000]
biggest = max(numbers, key = lambda x:x))

2. zip 데이터를 엮어주는 함수

zip은 파이썬 내장함수로 데이터를 엮을 때 사용한다.

아래 코드는 numbers 리스트와 letters 리스트를 zip()  함수의 인자로 넘겨서 호출 후에, 

for문으로 zip() 함수의 반환값을 대상으로 루프를 돌면서 튜플을 차례로 출력한다.

numbers = [1, 2, 3]
letters = ['A', 'B', 'C']

for pair in zip(numbers, letters):
	print(pair)
    
(1, 'A')
(2, 'B')
(3, 'C')

 

 zip() 기능:

1. 여러 그룹의 데이터를 반복문 한번에 처리할 수 있음!! 병렬처리 가능!!!

for number, upper, lower in zip("12345", "ABCDE", "abcde"):
	print(number, upper, lower)

1 A a
2 B b
3 C c
4 D d
5 E e

2. zip() 함수를 이용해 upzip 가능하다.

zip()

numbers = (1, 2, 3)
letters = ('A', 'B', 'C')

pairs = list(zip(numbers, letters))
print(pairs)

[(1, 'A'), (2, 'B'), (3, 'C')]

unzip

pair = [(1, 'A'), (2, 'B'), (3, 'C')]

numbers, letters = zip(*pairs)
numbers # (1,2,3)
letters # ('A', 'B', 'C')

 

3. zip() 과 2개의 리스트 이용해 딕셔너리 생성 가능

keys = [1, 2, 3]
valuse = ['a', 'b', 'c']

dict(zip(keys, values))
# {1:'A', 2:'B', 3:'C'} return
dict(zip(["year", "month", "date"],[2020, 8, 7]))

# {"year":2022 , "month": 8, "date": 7} return

# 주의사항

길이가 동일한 리스트를 사용하지 않으면, 긴 쪽의 인자들이 버려질 수 있다.


 

3. queue (PriorityQueue...)


 

4. heapq 


5. startswith( ) 와 endswith( )

 

startswith( ) : 시작하는 문자열이 동일하면 True, 아니면 False를 반환한다.

endswith( ) : 끝나는 문자열이 동일하면 True, 아니면 False를 반환한다.

file_name = "01-stduent.jpg"

file_name.startwith("01") # True
file_name.endwith(".jpg") # False

6. replace( ' * ', ' ? ' )

 

replace(바꿀 대상, 바꾸려는 문자열)

file_name = "01-student.jpg"

file_name.replace(".jpg", ".png")

7. count(개수를 알고자 하는 문자)

 

['a', 'ab','abc'].count('a')  # 1

'ababaaa'.count('a')  # 5

 

8. compile(query)


9. try: ~  except 예외처리

 

try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드
try:
    x = int(input('나눌 숫자를 입력하세요: '))
    y = 10 / x
    print(y)
except:    # 예외가 발생했을 때 실행됨
    print('예외가 발생했습니다.')

10. 슬라이싱

 

역순으로 출력하기 위해서는 step을 -1로 지정하면 된다

a[ : : -1]



 

반응형

+ Recent posts