파이썬질문
본문
from tqdm import tqdm
list = [원소1, 원소2, 원소3, ...]
for cnt, i in tqdm(enumerate(list)):
내용
실행하면 진행률이 표시되지않는데 어떻게하면 되죠?
답변 1
안녕하세요? ^^
질문하신 취지가 for문에 enumerate를 사용하면 tqdm의 프로그레스 바가 표시되지 않는다는 말씀이시죠?
https://github.com/tqdm/tqdm/issues/157 여기에도 비슷한 이슈가 올라와 있네요~
tqdm 모듈은 시간을 측정하기 전에 iterable한 객체의 길이가 확인되어야 제대로 작동합니다.
list는 그 자체로 iterable한 객체인 반면, enumerate(list)는 그렇지 않습니다 ㅠㅠ
이는 len(enumerate(list)를 실행하면 에러가 발생하는 점을 통해 확인할 수 있습니다.
따라서 다음과 같이 enumerate 안에 tqdm을 넣으셔야 프로그레스 바가 제대로 표시됩니다 ^^
for cnt, i in enumerate(tqdm(list)):
굳이 tqdm을 밖으로 빼고 싶으시다면 다음과 같이 처리할 수도 있습니다 :)
for cnt, i in tqdm(enumerate(list), total=len(list)):
참고로 위와 같은 문제는 enumerate() 뿐만 아니라 zip() 함수의 경우에도 발생합니다.
그럼 즐거운 주말 저녁 되세요~ ^-^
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.