파이썬 여름방학 스터디/2. 함수

4-2. 여러가지 함수(lambda, filter, map) 와 파일 읽고 쓰기

꿀복피그 2023. 8. 28. 10:03

안녕하세요~ 여러분!

다들 앞선 함수 부분 잘 공부하셨나요?

 

오늘은 자주 쓰이는 여러가지 함수에 대해 알아보고 파일을 읽고 쓰는 방법에 대해서도 알아볼거예요.

 

자, 그럼 오늘도 시작해볼까요~?

 

먼저, 첫번째는 lambda 함수예요

 

1. 람다 함수

람다 함수는 단일문으로 표현되는 익명 함수이고 주로 코드상에서 오직 한 번만 사용되는 기능이 있을 때, 일회성으로 사용하기 위해 쓰여요. 함수를 생성할 때 함수 앞에 쓰이는 def 과 동일한 역할을 해주죠. 그리고 return 값이 있는 함수로 return 명령어가 없어도 표현식의 결괏값을 리턴한답니다.

그럼 한 번 예시를 통해 살펴볼까요?

형식을 다음과 같아요

lambda x : x**3

여기에 이름을 부여하면,

lam = lambda x : x**3

이렇게 되겠죠~?

return 값이 있는 함수이기에 다음과 같이 작성할 수 있습니다.

(lambda x : x **3)(5)

결과로는 125가 나와요!

 

다음은 def을 통해 함수를 만든 것과 lambda를 통해 함수를 만든 것을 비교한거예요~

한번 살펴봅시다.

def myData(str):
  return len(str.strip())
data = ['watermelon           ','        apple', '        banana  ','          melon']
print(sorted(data, key=myData))
 

여기서 sorted() 함수는 특정 기준에 따라 정렬하는 함수로 key 옵션에 특정 기준을 넣어주면 해당 기준에 따라

정렬이 됩니다

이렇게 세 줄에 걸쳐 작성하는 코드를 lambda 함수를 통해 한 줄로 작성해보면

다음과 같아요~

print(sorted(data, key=lambda str : len(str.strip())))

어때요?

일반 함수와의 비교를 통해 알아보니까 

훨씬 더 잘 이해되지 않나요?

 

 

 

 

다음으로는 filter 함수에 대해 알아봅시다

2. filter 함수

filter 함수는 람다에서 유용하게 사용되는 대표적인 함수로 특정 조건을 만족하는 요소만 남기고 필터링 시켜요~

예시를 통해 쓰임을 살펴봅시다.

nums = [1, 2, 3, 4, 5, 6, 7, 8,9, 10, 14, 15, 16, 18, 20]

temp =list( filter(lambda n: n%2 == 0, nums))
print(temp)

위와 같이 사용하면 

짝수만 리스트 안에 남겠죠?

 

다음은 map 함수예요

3. map 함수

map 함수는 각 원소를 주어진 수식에 따라 변형하여 새로운 값을 반환하는 함수예요

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 18, 20]

temp = list(map(lambda n: n*0.01, nums))
print(temp)

위와 같은 코드에선 리스트 안의 정수들에 0.01이 곱해진 형태로 표현되어 나오겠죠?

 

다음은 이제 파일을 읽고 쓰는 법에 대해 살펴볼거예요

먼저

파일 열기 모드에는 다음과 같은 것들이 있답니다.

r: 읽기 모드/ 파일을 읽기만 할 때 사용한다.

w: 쓰기 모드/ 파일에 내용을 쓸 때 사용한다.

a: 추가 모드/ 파일의 마지막에 새로운 내용을 추가할 때 사용한다.

실제 쓰이는 형태를 보면 다음과 같아요.

 

f = open("C:/doit/새파일.txt", "w")
f.close

파일을 쓰기 모드로 열어서 내용을 쓰는 법도 간단해요~

f = open("C:/doit/새파일.txt", "w")
for i in range(1,11):
  data = "%d번째 줄입니다.\n"%i
  f.write(data)
f.close

다음은 파일을 읽는 여러 가지 방법에 대해 알아볼건데요

세 가지 함수에 대해 배워볼거예요

바로 readline() 함수와 readlines() 함수와 read() 함수 랍니다~

 

readline() 함수는 파일의 첫 번째 줄을 읽어 출려하는 예제예요.

이를 이용해 모든 줄을 읽어 출력하고 싶다면 다음과 같이 코드를 작성해볼 수 있겠죠~?

 

f = open("C:/doit/새파일.txt", "w")
while True:
  line = f.readline()
  if not line: break
  print(line)
f.close()

다음은 readlines 함수인데요

이는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 가지는 리스트를 리턴하는 함수입니다.

아래처럼 코드를 짜볼 수 있겠죠?

f = open("C:/doit/새파일.txt", "w")
lines = f.readlines()
for line in lines:
  line = line.strip()
  print(line)
f.close

그리고 마지막 read 함수는 파일의 내용 전체를 문자열로 리턴하는 함수예요

 

진짜 마지막으로 with문만 살펴보고 마치도록 해요

with문은 파일을 열고 닫는 것을 자동으로 처리하는 역할을 해요. 즉 따로 마지막에 close 함수를 쓸 필요가 없는 거죠.

with open("ggulpy.txt", "w") as f:
  f.write("Hello ggulpy")

f로 다음 파일을 열고 with 블록을 벗어나는 순간, 열린 파일 객체 f가 자동으로 닫힌답니다!

 

자, 오늘도 여기까지 함께 알아보느라

정말 수고 많았어요~

 

그럼 우리 다음 시간에

클래스 챕터에서 만나도록 해요~! 꿀

'파이썬 여름방학 스터디 > 2. 함수' 카테고리의 다른 글

4-1. 함수의 기본  (0) 2023.08.28