Bạn đang xem : python kiểm tra xem giá trị trong bộ

Chỉ cần sử dụng bất kỳ:

  nếu có (myvar in x for x in (r, s, t))
 

tra cứu tập hợp là 0 (1) vì vậy việc tạo liên hợp để kiểm tra xem biến có nằm trong tập hợp nào không là hoàn toàn không cần thiết thay vì chỉ kiểm tra bằng cách sử dụng in với bất kỳ nào sẽ ngắn mạch ngay sau khi tìm thấy kết quả trùng khớp và không tạo ra bộ mới.

Và tôi cũng đang tự hỏi liệu sự liên kết này có ảnh hưởng đến hiệu suất bằng cách nào đó không

Có, tất nhiên việc thống nhất các tập hợp sẽ ảnh hưởng đến hiệu suất, nó làm tăng thêm độ phức tạp, bạn đang tạo một tập hợp mới mỗi lần O (len (r) + len (s) + len (t)) để bạn có thể nói lời tạm biệt với quan điểm thực sự của việc sử dụng các bộ giúp tra cứu hiệu quả.

Vì vậy, điểm mấu chốt là bạn muốn duy trì tra cứu hiệu quả, bạn sẽ phải kết hợp tập hợp một lần và giữ chúng trong bộ nhớ, tạo một biến mới sau đó sử dụng biến đó để thực hiện tra cứu myvar . lần tạo ban đầu sẽ là 0 (n) và sau đó tìm kiếm sẽ là 0 (1) .

Nếu bạn không muốn thực hiện tra cứu trước khi tạo liên hợp, bạn sẽ có một nghiệm tuyến tính có độ dài là r + s + t - & gt; set.union (* (r, s, t)) trái ngược với ba lần tra cứu hằng số (trung bình) kém nhất. Điều đó cũng có nghĩa là luôn thêm hoặc xóa bất kỳ phần tử nào từ tập hợp thống nhất mới được thêm / xóa khỏi r, s hoặc t .

Một số thời gian thực tế trên các bộ có kích thước vừa phải cho thấy chính xác sự khác biệt:

  Trong [1]: r = set (range (10000))

Trong [2]: s = set (range (10001,20000))

Trong [3]: t = set (range (20001,30000))

Trong [4]: ​​thời gian bất kỳ (29000 in st cho st in (r, s, t))
1000000 vòng, tốt nhất là 3: 869 ns mỗi vòng

Trong [5]: thời gian 29000 trong r | s | t
1000 vòng lặp, tốt nhất là 3: 956 µs mỗi vòng lặp

Trong [6]: timeit giảm 29000 (lambda x, y: x.union (y), [r, s, t])
1000 vòng lặp, tốt nhất là 3: 961 µs mỗi vòng lặp

Trong [7]: timeit 29000 tính bằng r.union (s) .union (t)
1000 vòng lặp, tốt nhất là 3: 953 µs mỗi vòng lặp
 

Tính thời gian kết hợp cho thấy rằng phần lớn thời gian được dành cho các cuộc gọi liên minh:

  In [8]: timeit r.union (s) .union (t)
1000 vòng lặp, tốt nhất là 3: 952 µs mỗi vòng lặp
 

Sử dụng các tập hợp lớn hơn và nhận phần tử trong tập hợp cuối cùng:

  Trong [15]: r = set (range (1000000))

Trong [16]: s = set (range (1000001,2000000))

Trong [17]: t = set (range (2000001,3000000))


Trong [18]: tính giờ bất kỳ (2999999 in st cho st in (r, s, t))
1000000 vòng, tốt nhất là 3: 878 ns mỗi vòng

Trong [19]: timeit 2999999 giảm (lambda x, y: x.union (y), [r, s, t])
1 vòng, tốt nhất là 3: 161 ms mỗi vòng

Trong [20]: timeit 2999999 trong r | s | t
10 vòng, tốt nhất là 3: 157 ms mỗi vòng
 

Thực sự không có sự khác biệt nào cho dù các tập hợp có kích thước lớn như thế nào bằng cách sử dụng bất kỳ nào, nhưng khi kích thước tập hợp tăng lên, thời gian chạy bằng cách sử dụng union.

Cách duy nhất để làm cho nó nhanh hơn là bám vào hoặc nhưng chúng tôi đang tính chênh lệch vài trăm nano giây là chi phí tạo biểu thức trình tạo và lệnh gọi hàm:

  In [22]: timeit 2999999 in r hoặc 2999999 in s hoặc 2999999 in t
10000000 vòng, tốt nhất là 3: 152 ns mỗi vòng
 

Để kết hợp các tập hợp set.union (* (r, s, t)) cũng là nhanh nhất vì bạn không tạo các tập hợp trung gian:

  In [47]: timeit 2999999 in set.union (* (r, s, t))
10 vòng, tốt nhất là 3: 108 ms mỗi vòng
Trong [49]: r | s | t == set.union (* (r, s, t))
Hết [49]: Đúng
 


Xem thêm những thông tin liên quan đến chủ đề python kiểm tra xem giá trị trong bộ

lập trình python part 2 ngày 1/10

  • Tác giả: Những Đứa Con CN3
  • Ngày đăng: 2021-10-04
  • Đánh giá: 4 ⭐ ( 4025 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Kiểm tra key hoặc value có tồn tại trong dictionary python hay không

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 4 ⭐ ( 3056 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cách kiểm tra key hoặc value có tồn tại trong dictionary python hay không. Bạn sẽ học được cách kiểm tra key hoặc value có tồn tại trong dictionary python hay không bằng toán tử in hoặc toán

Chương trình Python để kiểm tra xem tất cả các giá trị trong danh sách có lớn hơn một giá trị nhất định hay không

  • Tác giả: vn.wsxdn.com
  • Đánh giá: 4 ⭐ ( 8818 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Làm thế nào để kiểm tra nếu chuỗi trống?

  • Tác giả: qastack.vn
  • Đánh giá: 4 ⭐ ( 4713 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Các chuỗi rỗng là "giả" , có nghĩa là chúng được coi là sai trong ngữ…

68 dòng code Python hay sử dụng xử lý dữ liệu trong Pandas

  • Tác giả: blog.hocexcel.online
  • Đánh giá: 3 ⭐ ( 3290 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Làm cách nào để kiểm tra xem một chuỗi có phải là một từ khóa hợp lệ trong Python hay không? » Cafedev.vn

  • Tác giả: cafedev.vn
  • Đánh giá: 5 ⭐ ( 8764 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong lập trình, một từ khóa là một “từ dành riêng” của ngôn ngữ mà nó truyền đạt một ý nghĩa đặc biệt cho trình thông dịch.

Kiểm tra dữ liệu là number hay string bằng Python

  • Tác giả: freetuts.net
  • Đánh giá: 3 ⭐ ( 2606 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Kiểm tra dữ liệu mà người dùng nhập vào là number hay string, đây là cách giúp bạn kiểm soát được dữ liệu nhập vào phù hợp với yêu cầu của bài toán.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Cách sử dụng HTML để mở liên kết trong tab mới - mở một siêu liên kết trong html tab mới

By ads_php