Từ điển độ phức tạp thời gian Python
Trong Python, các toán tử 2 và 3 kiểm tra tư cách thành viên trong danh sách, bộ dữ liệu, từ điển, v.v. Show
Bài viết này mô tả các nội dung sau
Từ 2 cũng được sử dụng trong câu lệnh 80 và cách hiểu danh sách. Xem các bài viết sau để biết chi tiết
Liên kết được tài trợ Cách sử dụng toán tử l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2sử dụng cơ bản 84 trả về 85 nếu 86 được bao gồm trong 87 và 88 nếu không 7nguồn. Không chỉ 89, mà cả 90, 15, 92 và các đối tượng có thể lặp lại khác đều có thể được vận hành 2nguồn. Từ điển ( 7) và chuỗi ( 9) được mô tả sauKiểm tra xem chúng có bằng nhau về giá trị khôngThử nghiệm của 2 dựa trên việc các giá trị có bằng nhau hay không cũng như 96. Đó là 85 nếu giá trị bằng nhau ngay cả khi loại khác nhau 8nguồn. Lưu ý rằng 98 là một lớp con của số nguyên 99, vì vậy 85 và 88 tương ứng với 32 và 33
Với câu lệnh l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 5 2 trả về một giá trị bool ( 85, 88) và có thể được sử dụng trực tiếp trong câu lệnh 5
nguồn. 1nguồn. Lưu ý rằng danh sách, bộ dữ liệu, chuỗi, v.v. được đánh giá là 88 nếu chúng trống và 85 nếu chúng không. Nếu bạn muốn kiểm tra xem một đối tượng có rỗng hay không, bạn có thể sử dụng đối tượng as it is 8nguồn. 9nguồn. Xem thêm các bài viết sau để kiểm tra giá trị thực cho từng loại
l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2 cho từ điển (l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 7)Thao tác 2 cho từ điển ( 7) kiểm tra trên khóa 3nguồn. Sử dụng 15, 16 nếu bạn muốn kiểm tra giá trị hoặc cặp khóa-giá trị 1nguồn. Xem chi tiết bài viết sau
l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2 cho chuỗi (______09)Phép toán 2 cho chuỗi ( 9) kiểm tra sự tồn tại của chuỗi con 8nguồn. Xem bài viết sau về tìm kiếm chuỗi. Nó cũng mô tả các hoạt động sử dụng các biểu thức thông thường
l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 3 (phủ định của l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2) 83 trả về phủ định của 84 20nguồn. Kết quả tương tự được trả về bằng cách thêm 85 vào toàn bộ hoạt động của 2 21nguồn. Tuy nhiên, nếu bạn thêm 85 vào toàn bộ hoạt động của 2, nó sẽ được hiểu theo hai cách, như hình bên dưới, vì vậy bạn nên sử dụng rõ ràng hơn 3 22nguồn. Vì 2 có mức độ ưu tiên cao hơn so với 85, nên nó được coi là thứ nhất nếu không có dấu ngoặc đơnTrường hợp thứ hai được công nhận như sau 23nguồn. l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2 cho nhiều yếu tốNếu bạn muốn kiểm tra xem có bao gồm nhiều phần tử hay không, sử dụng danh sách các phần tử đó như sau sẽ không hoạt động. Nó sẽ được kiểm tra xem bản thân danh sách có được đưa vào hay không 24nguồn. Sử dụng 13, 14 hoặc bộSử dụng l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 13, l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 14Kết hợp nhiều hoạt động của 2 bằng cách sử dụng 13 và 14. Nó sẽ được kiểm tra xem cả hai hay một trong hai được bao gồm
25nguồn. Vì 2 và 3 có độ ưu tiên cao hơn so với 13 và 14, dấu ngoặc đơn là không cần thiết. Tất nhiên nếu khó đọc bạn có thể đặt trong ngoặc đơn như ví dụ vừa rồiSử dụng l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 15Nếu bạn có nhiều phần tử muốn kiểm tra, sẽ dễ dàng hơn khi sử dụng tập hợp ________ 113, ________ 114
Ví dụ: việc 217 có chứa tất cả các phần tử của 218 hay không tương đương với việc 218 có phải là tập con của 217 hay không 26nguồn. Việc 217 không chứa các phần tử của 218 có tương đương với việc 217 và 218 có nguyên tố cùng nhau hay không 27nguồn. Nếu 217 và 218 không nguyên tố cùng nhau, điều đó có nghĩa là 217 chứa ít nhất một phần tử của 218 28nguồn. Liên kết được tài trợ Độ phức tạp thời gian của l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2Tốc độ thực thi của toán tử 2 phụ thuộc vào loại đối tượng đíchKết quả đo thời gian thực hiện của 2 cho các danh sách, bộ và từ điển được hiển thị bên dướiLưu ý rằng mã bên dưới sử dụng lệnh ma thuật Jupyter Notebook 232 và không hoạt động khi chạy dưới dạng tập lệnh Python
Xem bài viết sau để biết độ phức tạp của thời gian
Lấy danh sách 10 phần tử và 10000 phần tử làm ví dụ 29nguồn. Mã mẫu bên dưới được thực thi bằng Python 3. 7. 4, và tất nhiên, kết quả có thể thay đổi tùy theo môi trường Chậm cho danh sách. Trên)Độ phức tạp thời gian trung bình của toán tử 2 cho danh sách là 17. Nó trở nên chậm hơn khi có nhiều yếu tố 80nguồn. Thời gian thực hiện rất khác nhau tùy thuộc vào vị trí của giá trị cần tìm. Mất nhiều thời gian nhất khi giá trị của nó ở cuối hoặc không tồn tại 81nguồn. Nhanh chóng cho bộ. Ô(1)Độ phức tạp thời gian trung bình của toán tử 2 cho các tập hợp là 18. không phụ thuộc vào số phần tử 82nguồn. Thời gian thực hiện không thay đổi tùy theo giá trị cần tìm 83nguồn. Nếu bạn muốn lặp lại thao tác 2 cho một danh sách có nhiều phần tử, thì chuyển đổi trước thành tập hợp sẽ nhanh hơn 84nguồn. Lưu ý rằng cần có thời gian để chuyển đổi một danh sách thành một tập hợp, do đó, có thể giữ danh sách đó dưới dạng danh sách nhanh hơn nếu số lượng thao tác 2 nhỏcho từ điểnLấy từ điển sau đây làm ví dụ 85nguồn. Như đã đề cập ở trên, hoạt động 2 cho từ điển kiểm tra các phímKhóa của từ điển là một giá trị duy nhất cũng như tập hợp và thời gian thực hiện gần giống như đối với tập hợp 86nguồn. Mặt khác, các giá trị từ điển được phép sao chép giống như một danh sách. Thời gian thực hiện của 2 cho 15 gần giống như đối với danh sách 87nguồn. Các cặp khóa-giá trị là duy nhất. Thời gian thực hiện của 2 cho 16 là khoảng 15 + α 88nguồn. l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 2 trong câu lệnh l = [0, 1, 2] i = 0 if i in l: print(f'{i} is a member of {l}.') else: print(f'{i} is not a member of {l}.') # 0 is a member of [0, 1, 2]. 80 và cách hiểu danh sáchTừ 2 cũng được sử dụng trong câu lệnh 80 và cách hiểu danh sách 89nguồn. 0nguồn. Xem các bài viết sau để biết chi tiết về câu lệnh 80 và cách hiểu danh sách
Lưu ý rằng toán tử 2 có thể được sử dụng làm điều kiện trong việc hiểu danh sách, điều này gây nhầm lẫn
1nguồn. 2 đầu tiên là 2 để hiểu danh sách và 2 thứ hai là toán tử 2
Tại sao là từ điển O 1?O(1) có nghĩa là hằng số bất kể kích thước của dữ liệu . Hàm băm mất một khoảng thời gian nhất định, nhưng lượng thời gian đó không tỷ lệ với kích thước của bộ sưu tập.
Từ điển có chậm trong Python không?Python chậm. Tôi cá là bạn có thể gặp phản biện này nhiều lần về việc sử dụng Python, đặc biệt là từ những người đến từ thế giới C hoặc C ++ hoặc Java. Điều này đúng trong nhiều trường hợp, chẳng hạn, việc lặp lại hoặc sắp xếp các mảng, danh sách hoặc từ điển trong Python đôi khi có thể bị chậm
Tại sao từ điển nhanh hơn danh sách?Danh sách là một tập hợp dữ liệu được sắp xếp theo thứ tự, trong khi các từ điển lưu trữ dữ liệu dưới dạng các cặp khóa-giá trị bằng cách sử dụng cấu trúc hashtable. Do đó, việc tìm nạp các phần tử từ cấu trúc dữ liệu danh sách khá phức tạp so với từ điển trong Python . Do đó, từ điển nhanh hơn danh sách trong Python.
Tuple hay từ điển nào nhanh hơn?Ai cũng biết rằng trong Python bộ dữ liệu nhanh hơn danh sách và ký tự nhanh hơn đối tượng. |