python/Data Science
[Book_Fluent Python] 2장 시퀀스 : 지능형 리스트, 제너레이터
jinozpersona
2020. 2. 26. 14:14
1. 지능형 리스트 : 새로운 리스트만 생성, 짧은 코딩
for loop 효율적 사용 방법
폴더 내 파일리스트 불러오기 선택된 파일 load 하기
- 좋은 예
flist = [flist for flist in flist_base if flist.startswith(head_name)]
fpath_base = os.path.join('./data/','sub_dir')
flist_base = os.listdir(fpath_base)
flist = [flist for flist in flist_base if flist.startswith(head_name)]
for i in range(0,len(flist)):
vname = flist[i]
fdata = np.loadtxt(os.path.join(fpath_base,vname), delimiter=",")
- 나쁜 예
flist_sum = []
for flist in flist_base:
if flist.startswith(head_name):
flist_sum.append(flist)
% 차이점
2. 제너레이터 표현식 메모리 유지가 필요없는 데이터 생성
colors = ['black','white']
sizes = ['S','M','L']
tshirts = ('%s %s' % (c,s) for c in colors for s in sizes)
for tshirt in ('%s %s' % (c,s) for c in colors for s in sizes):
print(tshirt,type(tshirt))
print(tshirts)
print(type(tshirts))
print(list(tshirts))
tshirts를 제너레이터 형태로 저장 후 list로 변환하여 사용 가능
제너레이터는 오브젝트 형태로 저장하기 모든 값을 저장하는 리스트 보다 메모리 효율이 좋음
메모리 확인 : sys.getsizeof
반응형