Đặ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

Đặt và đóng băng trong Python

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

Đặt và đóng băng trong Python

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 RA

set

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ến

Cá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)
 in 
----> 1 cities = set((["Python","Perl"], ["Paris", "Berlin", "London"]))
      2 
      3 cities
TypeError: unhashable type: 'list'

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

Đặt và đóng băng trong Python

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ến

Chú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

Đặt và đóng băng trong Python

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 động

thê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 RA

type(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 RA

type(x)
3

sao chép

Tạo một bản sao nông, được trả lại

type(x)
4

ĐẦU RA

type(x)
5

type(x)
6

type(x)
7

ĐẦU RA

type(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 RA

set
0

set
1

ĐẦU RA

set
2

Thay vì sử dụng chênh lệch phương thức, chúng ta có thể sử dụng toán tử "-"

set
3

ĐẦU RA

set
0

set
5

ĐẦU RA

set
2

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

set
7

ĐẦU RA

set
0

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

set
9

ĐẦU RA

x = set(["Perl", "Python", "Java"])
x
0

x = set(["Perl", "Python", "Java"])
x
1

ĐẦU RA

x = set(["Perl", "Python", "Java"])
x
0

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"])
x
3

ĐẦU RA

x = set(["Perl", "Python", "Java"])
x
0

x = set(["Perl", "Python", "Java"])
x
5

ĐẦU RA

x = set(["Perl", "Python", "Java"])
x
6

công đoàn

Phươ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"])
x
7

ĐẦU RA

x = set(["Perl", "Python", "Java"])
x
8

Điều này có thể được viết tắt bằng toán tử đường ống ". "

x = set(["Perl", "Python", "Java"])
x
9

ĐẦU RA

x = set(["Perl", "Python", "Java"])
x
8

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.