파이썬 3.2.3을 사용하고 있습니다. 반대로 목록을 반복하는 가장 빠른 방법은 무엇입니까? [:: - 1], reverse, list.reverse() 아니면 다른 방법일까요? 나는 대략 5e6 요소 정도의리스트를 다루고 있으므로리스트를 복사하는 것을 피할 필요가있다.가능한 빨리 역순으로 파이썬리스트를 반복 할 필요가 있습니다
답변
>>> from timeit import Timer
>>> t = Timer('[x for x in l[::-1]]', 'l = list(range(100000))')
>>> t.timeit(number=1000)
5.549649953842163
>>> t = Timer('l.reverse(); [x for x in l]', 'l = list(range(100000))')
>>> t.timeit(number=1000)
4.548457145690918
>>> t = Timer('[x for x in reversed(l)]', 'l = list(range(100000))')
>>> t.timeit(number=1000)
4.428632974624634
결론 : 반대() 100000 개의 항목이있는 목록에서 l.reverse()보다 약간 빠릅니다. 물론 이것은 실제로 전체 목록을 반복하지 않으면 훨씬 더 사실입니다. 목록을 두 번 이상 사용하면 사실이 아닙니다.
l[::-1]
은 reversed()
을 도입 한 이후 구식입니다.
reversed
은 반복자를 반환하므로 목록을 복사하지 않으므로 한 번에 하나의 요소 만 생성해야합니다. (reversed
원래 목록을 수정하지 않는 반면, list.reverse()
또한 목록을 복사하지 않습니다,하지만 그것을 변이, 그래서 목록 작업을 완료 한 후 뒤쪽으로 될 것입니다.)
반복자는 반드시 복사를 막지는 않지만,이 경우에는 작동합니다. –
사실, 일반적으로 반복자를 제공하는 내장 파이썬 함수는 전체 목록을 한 번에 생성하지 않습니다. 그것이 그들의 전체 요점입니다. – BrenBarn
- 1. 큰 JSON 피드를 반복 할 필요가 있습니다.
- 2. C# 역순으로 키 반복
- 3. 반복 가능한 범위에서 반복
- 4. GTK3은 너무 빨리 반복 될 때 gtk_widget_queue_draw를 무시하는 경우가 있습니다.
- 5. 모바일 장치를 인증 할 필요가 있습니다
- 6. 이 Excel 파일을 자동화 할 필요가 있습니다.
- 7. 오라클에 십진수 값을 표시 할 필요가 있습니다
- 8. 고밀도 반복 가능한 배경
- 9. suds를 사용하여 파이썬리스트를 ladon에게 건네겠습니다.
- 10. 여러 인수를 반복 할 수 있습니다.
- 11. Cakephp의 반복 가능한 하위 형식
- 12. 구성 가능한 제품의 관련 제품 속성을 가장 빨리/가장 좋은 방법으로 반환 할 수 있습니다.
- 13. django 템플릿에 파이썬리스트를 표시하는 방법
- 14. 반복 가능한 빌드를 생성하는 WSDL
- 15. sparsematrix로 무엇을 할 지 알아 내야 할 필요가 있습니다
- 16. 텍스트 파일을 양식에로드 할 때 은폐 할 필요가 있습니다.
- 17. Java Map : 역순으로 배열
- 18. 지속 가능하고 반복 가능한 명령
- 19. Java : 해시 테이블 keySet에서 반복 순서를 역순으로 수행하십시오. 방법?
- 20. 값을 기준으로 문자열을자를 필요가 있습니다.
- 21. 파이썬리스트를 만들어 가짜로 만들 수 있습니까?
- 22. 예외가 반복 가능한 이유는 무엇입니까?
- 23. 가능한 복제를 SMS를 보내기 가능한 한 빨리 PHP
- 24. ASP.NET을 배우려면 C# 가능한 빨리 배우십시오?
- 25. 가능한 한 빨리 새 이메일 받기
- 26. 가능한 한 빨리 CGImage 데이터 스트림 표시
- 27. html 형식의 사용자 입력이 자바 스크립트없이 파이썬리스트를 생성 할 수 있습니다
- 28. 제목별로 요소를 찾을 필요가 있습니다.
- 29. 이 오류를 해결할 필요가 있습니다
- 30. 이미지에서 레이아웃을 만들 필요가 있습니다.
직접 테스트해야합니다. ['timeit' 모듈 (http://docs.python.org/library/timeit.html))을 확인하시기 바랍니다. –