python for loop을 좀 더 효율적으로 사용하는 방법이 있을까요?
조회수 339회
with open('Identified Atoms', 'w') as fo:
for num, i in enumerate(iden_interfaceAtomA_B):
print(f' >>> {num}')
for j in iden_interfaceAtomC_D:
fo.write( str(i[0]) )
fo.write( str(i[1]) )
fo.write('\n')
위의 코드에서 중첩 for loop을 사용하는 코드가 있는데 iterable 객체(?)가 커질 수록 너무 오래 걸립니다. 좀 더 pythonic 하면서 효율적으로 코드를 짜고 싶은데 어떤 방법이 좋을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
iden_interfaceAtomC_D_len = len(iden_interfaceAtomC_D) with open('Identified Atoms', 'w') as fo: for num, i in enumerate(iden_interfaceAtomA_B): print(f' >>> {num}') #for j in iden_interfaceAtomC_D: # fo.write( str(i[0]) ) # fo.write( str(i[1]) ) # fo.write('\n') fo.write( (str(i[0])+str(i[1])+'\n') * iden_interfaceAtomC_D_len )
- 제시한 코드가 정확한 거라면, 안쪽 for 루프는
문자열 * 길이
로 바꾸고, write 함수의 호출을 줄일 수 있습니다. - print 문의 부하도 상당히 큽니다. 진행상황을 확인하고자 하는 거라면, print 함수 호출빈도를
if num%1000 == 0:
같은 조건을 주어 줄여보세요. - 루프의 진행상황을 확인하는 거라면, tqdm 을 써보세요.
- 제시한 코드가 정확한 거라면, 안쪽 for 루프는
댓글 입력