경기도미래기술학교 AI개발자 부트캠프 9일차 TIL - 왜 map의 값을 뽑을 때는 list를 써야 할까. 람다, 리스트 컴프리헨션 복습.

2023. 5. 19. 00:57python

반응형

 

하기 전에 : 

1. 기술적으로 몰랐던 것이나 막혔던 부분은 꼭 한 번 다시 생각하고 공부해보자. 웬만하면 그냥 넘어가지 말고.. 대체도 있으면 되긴 하지만 알면 좋으니까. 나중에 써먹을 수 있고.

2.이름명세 : 자바는 언더스코어를 지양하는 경향이 있는데 파이썬은 오히려 자주 쓴다고 한다. 근데 나는 자바에서 언더스코어는 디비에 많이 쓰기 때문에 지양한다고 했는데 파이썬도 어차피 디비랑 연동 하지 않나?? 왜 이런 차이가 생기는지는 모르겠는 부분이다.

 

 

1. list()에 대해서.

 

volatility = map(lambda low, high: high - low, low_prices, high_prices)
print(volatility)

이렇게 쓰면 객체의 주소 같은 것이 보인다.

volatility = list(map(lambda low, high: high - low, low_prices, high_prices))
print(volatility)

이렇게 써야 안에 있는 값이 온전하게 보인다.

 

https://hkim-data.tistory.com/182

 

#3 python의 메모리 할당과 관리 (Stack & Heap Memory)

https://hkim-data.tistory.com/181 #2 python의 메모리 할당과 관리 (Everything is object in Python) 2021.12.29 - [Comuter Science] - #1 python 메모리 구조 #1 python 메모리 구조 최근 기술면접에서 메모리 영역에 대한 질문을

hkim-data.tistory.com

(힙, 스택 등 메모리 할당 설명이 되어있는 블로그인데 나중에 읽자.)

 

왜그럴까? map은 지연평가(lazy evaluation)라는 방식을 채택해서 map 안에 당장 직접적인 값이 메모리에 저장되어있지 않다. 필요할 때만 계산되어 꺼내온다. 

https://dojang.io/mod/page/view.php?id=2405

 

파이썬 코딩 도장: 39.1 반복 가능한 객체 알아보기

Unit 39. 이터레이터 사용하기 이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)입니다. 지금까지 for 반복문을 사용할 때 range를 사용했습니다. 만약 100번을 반복한다면 for i in range(100):

dojang.io

iterater에 대해서 좀 더 상세하게 알게되었다. 파이썬을 터미널에 연결하고 매직메서드를 활용한 iter 메서드, next 메서드를 동작하니 아래와 같이 나왔다.

>>> it=[1,2,3].__iter__()
>>> it.__next__()
1
>>> it.__next__()
2
>>> it.__next__()
3
>>> it.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

감동이다.... 거의 감동란 급 감동... 이걸 진작 알았으면 더 쉬웠을텐데.. 라는 생각도 들고, 내가 선 암기 후 이해를 했기 때문에 지금 이것을 봤을 때 감동이 더하지 않았을까 싶다. 

 

 * iterable한 곳을 써야할 때 len()을 range로 묶는 이유이다. 객체의 요소가 필요하기 때문에 순서대로 나와야 한다.

 

 

리스트 컴프리헨션(List Comprehension) : 리스트를 만들 때 좀더 편하게 사용하라고 하는 것.

 

표현식 for 조건요소 in iterable 변수 조건문.

 

 

# 파일 열기
with open('테스트파일.txt', 'r') as file:
    # 파일 읽기
    content = file.read()
    print(content)

# 파일 쓰기
with open('테스트파일.txt', 'w') as file:
    file.write("Hello Python")

# 파일

 

728x90