1
저는 파이썬에서 매우 많은 목록을 사용하여 몇 가지 수학을하고 있지만 그 후에는 상당히 뒤떨어지기 시작했습니다 (~ 20 초). 필자는 다차원 및 편평한 목록을 비교하기 시작했습니다.성능 : 다차원리스트 대 평면 목록
코드
from timeit import timeit
from sys import getsizeof
print("Literals:")
print("Flat list: {} seconds".format(timeit("[1, 2, 3, 1, 2, 3, 1, 2, 3]")))
print("Mult list: {} seconds".format(
timeit("[[1, 2, 3], [1, 2, 3], [1, 2, 3]]")))
a = list(range(100))
b = [list(range(i * 10, i * 10 + 10)) for i in range(10)]
print("\nSizes:")
print("Flat list: {} bytes".format(getsizeof(a)))
print("Mult list: {} bytes".format(getsizeof(b)))
print("\nAppending:")
print("Flat list: {} seconds".format(
timeit("a.extend((1, 2, 3))", "a = [1, 2, 3, 1, 2, 3]")))
print("Mult list: {} seconds".format(
timeit("b.append([1, 2, 3])", "b = [[1, 2, 3], [1, 2, 3]]")))
출력
Literals:
Flat list: 0.17474557721948392 seconds
Mult list: 0.39777811142990527 seconds
Sizes:
Flat list: 508 bytes
Mult list: 100 bytes
Appending:
Flat list: 0.11419465630051207 seconds
Mult list: 0.17854960247173668 seconds
이 다차원 목록을 변경하지만, 적은 메모리를 가지고하는 데 시간이 더 걸릴 하더군요,하지만 난 많은 등, 확실히 할 수 없다 타이밍의 더 많은 또는 더 적은 시간이 걸리는 다른 방법이 필요합니다. 어느 목록 유형이 더 효율적이고 어떤 상황에 있습니까?
'numpy'를 사용하지 않는 이유가 있습니까? 대용량 목록에서 수학 연산을 수행하는 경우 numpy 배열에서 벡터 연산을 사용하고 파이썬 목록에서 반복 연산을 사용하는 것의 성능 차이는 생각하는 것 중 가장 작은 것입니다. – DSM
저는 파이썬 프로그래밍에 대해 상당히 새로운 지식을 가지고 있습니다. 그것을 제안 주셔서 감사합니다! 나는 한 번 훑어 보았고 완벽 해 보인다. –