Tôi đã mã hóa một vấn đề Euler, và tôi chạy vào câu hỏi làm tôi tò mò. Tôi có hai đoạn mã. Một là với danh sách các từ điển sử dụng khác.Từ điển Python so với danh sách, nhanh hơn?
sử dụng danh sách:
n=100000
num=[]
suma=0
for i in range(n,1,-1):
tmp=tuple(set([n for n in factors(i)]))
if len(tmp) != 2: continue
if tmp not in num:
num.append(tmp)
suma+=i
sử dụng từ điển:
n=100000
num={}
suma=0
for i in range(n,1,-1):
tmp=tuple(set([n for n in factors(i)]))
if len(tmp) != 2: continue
if tmp not in num:
num[tmp]=i
suma+=i
Tôi chỉ quan tâm đến hiệu suất. Tại sao ví dụ thứ hai sử dụng từ điển chạy cực nhanh, nhanh hơn ví dụ đầu tiên với danh sách. ví dụ với từ điển chạy nhanh hơn gấp ba mươi lần!
Tôi đã thử nghiệm 2 mã này bằng cách sử dụng n = 1000000 và mã đầu tiên chạy trong 1032 giây và mã thứ hai chạy chỉ trong 3,3 giây ,,, amazin '!
Dán mã của bạn trực tiếp từ IDE của bạn, đánh dấu tất cả, sau đó nhấn tổ hợp phím Ctrl + K – Cody
vấn đề @Cody là không phải với thụt đầu dòng nhưng với thực tế anh ta đang đặt các khối mã trong danh sách. Tôi đã sửa định dạng trong bản chỉnh sửa đang chờ xử lý. – Tagc
@Tagc Tôi không thấy mã, vì vậy tôi đã đoán. Tốt sửa chữa mà sau đó. – Cody