Đặt và đóng băng trong Python
Trong chương này của hướng dẫn của chúng tôi, chúng tôi đang xử lý việc triển khai các bộ của Python. Mặc dù tập hợp ngày nay là một phần không thể thiếu của toán học hiện đại, nhưng điều này không phải lúc nào cũng đúng. Lý thuyết tập hợp đã bị nhiều người bác bỏ, ngay cả bởi một số nhà tư tưởng vĩ đại. Một trong số họ là nhà triết học Wittgenstein. Ông không thích lý thuyết tập hợp và phàn nàn rằng toán học "bị đè bẹp bởi những thành ngữ nguy hiểm của lý thuyết tập hợp". ". Ông bác bỏ lý thuyết tập hợp là "hoàn toàn vô nghĩa", là "buồn cười" và "sai lầm". Sự chỉ trích của ông xuất hiện nhiều năm sau cái chết của nhà toán học người Đức Georg Cantor, người sáng lập lý thuyết tập hợp. David Hilbert đã bảo vệ nó khỏi những lời chỉ trích bằng tuyên bố nổi tiếng. "Không ai có thể trục xuất chúng ta khỏi Thiên đường mà Cantor đã tạo ra Show Cantor đã định nghĩa một tập hợp ở đầu cuốn "Beiträge zur Begründung der transfiniten Mengenlehre" của ông là. “Tập hợp là sự tập hợp lại thành một tổng thể các đối tượng xác định, riêng biệt của nhận thức và tư duy của chúng ta - chúng được gọi là các phần tử của tập hợp. " Ngày nay, chúng ta có thể nói bằng tiếng Anh "đơn giản". Một tập hợp là một tập hợp các đối tượng được xác định rõ Các phần tử hoặc thành viên của một tập hợp có thể là bất cứ thứ gì. số, ký tự, từ, tên, chữ cái trong bảng chữ cái, thậm chí các bộ khác, v.v. Các bộ thường được ký hiệu bằng chữ in hoa. Đây không phải là định nghĩa toán học chính xác, nhưng nó đủ tốt cho những điều sau đây Kiểu dữ liệu "set", là kiểu bộ sưu tập, là một phần của Python kể từ phiên bản 2. 4. Một tập hợp chứa một tập hợp không có thứ tự các đối tượng duy nhất và bất biến. Kiểu dữ liệu tập hợp, như tên ngụ ý, là một triển khai Python của các tập hợp khi chúng được biết đến từ toán học. Điều này giải thích tại sao các tập hợp không giống như danh sách hoặc bộ dữ liệu không thể có nhiều lần xuất hiện của cùng một phần tử Đào tạo Python trực tiếp Thưởng thức trang này? Nhìn thấy. Tổng quan về các khóa học Python trực tiếp đăng ký tại đây bộNếu chúng ta muốn tạo một tập hợp, chúng ta có thể gọi hàm tập hợp tích hợp với một chuỗi hoặc một đối tượng có thể lặp lại khác Trong ví dụ sau, một chuỗi được số ít hóa thành các ký tự của nó để xây dựng tập kết quả x x = set("A Python Tutorial") x ĐẦU RA{' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'} type(x) ĐẦU RAset Chúng ta có thể chuyển một danh sách cho hàm set tích hợp sẵn, như chúng ta có thể thấy trong phần sau x = set(["Perl", "Python", "Java"]) x ĐẦU RA{'Java', 'Perl', 'Python'} Bây giờ, chúng tôi muốn chỉ ra điều gì sẽ xảy ra, nếu chúng tôi chuyển một bộ có các phần tử xuất hiện lại cho hàm thiết lập - trong ví dụ của chúng tôi là thành phố "Paris" cities = set(("Paris", "Lyon", "London","Berlin","Paris","Birmingham")) cities ĐẦU RA{'Berlin', 'Birmingham', 'London', 'Lyon', 'Paris'} Như chúng ta đã dự đoán, không có sự nhân đôi nào xảy ra trong tập hợp các thành phố thu được Bộ bất biếnCác bộ được triển khai theo cách không cho phép các đối tượng có thể thay đổi. Ví dụ sau đây chứng minh rằng chúng ta không thể bao gồm các danh sách chẳng hạn như các phần tử ________số 8_______ ĐẦU RA--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Mặt khác, Tuples vẫn ổn {' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}0 Đào tạo Python trực tiếp Thưởng thức trang này? Nhìn thấy. Tổng quan về các khóa học Python trực tiếp Các khóa học trực tuyến sắp tới Khái niệm cơ bản về Python cho người mới bắt đầu Khóa học nâng cao chuyên sâu Python dành cho kỹ sư và nhà khoa học Lập trình hướng đối tượng với Python đăng ký tại đây băng giáMặc dù các bộ không thể chứa các đối tượng có thể thay đổi, nhưng các bộ có thể thay đổi {' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}1 ĐẦU RA{' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}2 Frozensets giống như bộ ngoại trừ việc chúng không thể thay đổi, tôi. e. chúng là bất biến {' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}3 ĐẦU RA{' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}4 Ký hiệu cải tiếnChúng ta có thể định nghĩa các tập hợp (vì Python2. 6) mà không cần sử dụng chức năng thiết lập tích hợp. Chúng ta có thể sử dụng dấu ngoặc nhọn để thay thế {' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}5 ĐẦU RA{' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}6 Đào tạo Python trực tiếp Thưởng thức trang này? Nhìn thấy. Tổng quan về các khóa học Python trực tiếp đăng ký tại đây Đặt hoạt độngthêm (phần tử){' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}7 {' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}8 ĐẦU RA{' ', 'A', 'P', 'T', 'a', 'h', 'i', 'l', 'n', 'o', 'r', 't', 'u', 'y'}9 type(x)0 ĐẦU RAtype(x)1 Tất nhiên, một phần tử sẽ chỉ được thêm vào nếu nó chưa có trong tập hợp. Nếu nó đã được chứa, lệnh gọi phương thức không có tác dụng thông thoáng()Tất cả các phần tử sẽ bị xóa khỏi một tập hợp type(x)2 ĐẦU RAtype(x)3 sao chépTạo một bản sao nông, được trả lại type(x)4 ĐẦU RAtype(x)5 type(x)6 type(x)7 ĐẦU RAtype(x)3 Phép gán "city_backup = more_cities" chỉ tạo một con trỏ, tôi. e. tên khác, với cùng một cấu trúc dữ liệu sự khác biệt()Phương thức này trả về sự khác biệt của hai hoặc nhiều bộ dưới dạng một bộ mới, không thay đổi bộ ban đầu type(x)9 ĐẦU RAset0 set1 ĐẦU RAset2 Thay vì sử dụng chênh lệch phương thức, chúng ta có thể sử dụng toán tử "-" set3 ĐẦU RAset0 set5 ĐẦU RAset2 Difference_update()Phương thức Difference_update xóa tất cả các phần tử của tập hợp khác khỏi tập hợp này. x. Difference_update(y) giống như "x = x - y" hoặc thậm chí x -= y hoạt động set7 ĐẦU RAset0 loại bỏ (el)Một phần tử el sẽ bị xóa khỏi tập hợp, nếu nó được chứa trong tập hợp. Nếu el không phải là thành viên của tập hợp, sẽ không có gì được thực hiện set9 ĐẦU RAx = set(["Perl", "Python", "Java"]) x0 x = set(["Perl", "Python", "Java"]) x1 ĐẦU RAx = set(["Perl", "Python", "Java"]) x0 loại bỏ (el)Hoạt động giống như discard(), nhưng nếu el không phải là thành viên của tập hợp, lỗi KeyError sẽ xuất hiện x = set(["Perl", "Python", "Java"]) x3 ĐẦU RAx = set(["Perl", "Python", "Java"]) x0 x = set(["Perl", "Python", "Java"]) x5 ĐẦU RAx = set(["Perl", "Python", "Java"]) x6 công đoànPhương thức này trả về hợp của hai tập hợp dưới dạng một tập hợp mới, tôi. e. tất cả các phần tử trong một trong hai tập hợp x = set(["Perl", "Python", "Java"]) x7 ĐẦU RAx = set(["Perl", "Python", "Java"]) x8 Điều này có thể được viết tắt bằng toán tử đường ống ". " x = set(["Perl", "Python", "Java"]) x9 ĐẦU RAx = set(["Perl", "Python", "Java"]) x8 Giao lộ)Trả về giao điểm của tập đối tượng và tập hợp s dưới dạng một tập hợp mới. Nói cách khác, một tập hợp có tất cả các phần tử được chứa trong cả hai tập hợp được trả về Hai sự khác biệt giữa set và freezeset là gì?Frozenset tương tự như set trong Python, ngoại trừ việc frozensets là bất biến , có nghĩa là một khi đã tạo thì không thể thêm các phần tử từ Frozenset . Hàm này chấp nhận bất kỳ đối tượng có thể lặp nào làm đầu vào và biến nó thành một đối tượng không thể thay đổi.
Frozenset trong Python là gì?Phương thức Python freezeset() tạo một đối tượng Set bất biến từ một đối tượng có thể lặp lại . Nó là một chức năng Python tích hợp. Vì nó là một đối tượng được thiết lập nên chúng ta không thể có các giá trị trùng lặp trong Frozenset.
Bộ đông lạnh có nhanh hơn bộ không?Ban đầu, tôi giả định rằng freezeset sẽ cung cấp hiệu suất tra cứu tốt hơn set , vì nó không thay đổi và do đó có thể khai thác cấu trúc của các mục được lưu trữ. Có vẻ như frozenset thực sự chậm hơn về hiệu suất tra cứu , cả trong CPython và PyPy.
Tập hợp trong Python là gì?Các tập hợp được dùng để lưu trữ nhiều mục trong một biến duy nhất . Set là một trong 4 kiểu dữ liệu tích hợp trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu, 3 kiểu còn lại là List, Tuple và Dictionary, tất cả đều có chất lượng và cách sử dụng khác nhau. Một bộ là một bộ sưu tập không có thứ tự, không thể thay đổi* và không được lập chỉ mục. |