python for loop을 좀 더 효율적으로 사용하는 방법이 있을까요?

조회수 328회
    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 )
    
    
    1. 제시한 코드가 정확한 거라면, 안쪽 for 루프는 문자열 * 길이 로 바꾸고, write 함수의 호출을 줄일 수 있습니다.
    2. print 문의 부하도 상당히 큽니다. 진행상황을 확인하고자 하는 거라면, print 함수 호출빈도를 if num%1000 == 0: 같은 조건을 주어 줄여보세요.
    3. 루프의 진행상황을 확인하는 거라면, tqdm 을 써보세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)