LÀM THẾ NÀO LÀ chức năng thiết lập được triển khai trong Python?

Cấu trúc dữ liệu được sử dụng trong SET là Băm, một kỹ thuật phổ biến để thực hiện thao tác chèn, xóa và duyệt trung bình trong O[1]. Các thao tác trên Hash Table có phần giống với Linked List. Các bộ trong python là danh sách không có thứ tự với các phần tử trùng lặp đã bị xóa

Để tạo bảng băm từ đầu, chúng tôi bắt đầu với một số bộ nhớ được phân bổ, tương tự như những gì chúng tôi đã bắt đầu với mảng

Đối với một mảng, nếu chúng ta muốn chèn dữ liệu, chúng ta chỉ cần tìm nhóm nhỏ nhất chưa sử dụng và chèn dữ liệu của mình vào đó [và thay đổi kích thước nếu cần]

Đối với các bảng băm, trước tiên chúng ta phải tìm ra vị trí của dữ liệu trong đoạn bộ nhớ liền kề này

Vị trí của dữ liệu mới phụ thuộc vào hai thuộc tính của dữ liệu chúng tôi đang chèn. giá trị băm của khóa và cách so sánh giá trị với các đối tượng khác

Điều này là do khi chúng ta chèn dữ liệu, khóa đầu tiên được băm và ẩn để nó biến thành một chỉ mục hiệu quả trong một mảng

Mặt nạ đảm bảo rằng giá trị băm, có thể lấy giá trị của bất kỳ số nguyên nào, phù hợp với số lượng nhóm được phân bổ

Vì vậy, nếu chúng tôi đã phân bổ 8 khối bộ nhớ và giá trị băm của chúng tôi là 28975, thì chúng tôi coi bộ chứa ở chỉ mục

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
7

Tuy nhiên, nếu từ điển của chúng ta đã phát triển để yêu cầu 512 khối bộ nhớ, thì mặt nạ sẽ trở thành

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
8 [và trong trường hợp này, chúng ta sẽ xem xét nhóm ở chỉ mục
#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
9]

Bây giờ chúng ta phải kiểm tra xem thùng này đã được sử dụng chưa. Nếu nó trống, chúng ta có thể chèn khóa và giá trị vào khối bộ nhớ này. Chúng tôi lưu trữ khóa để có thể đảm bảo rằng chúng tôi đang truy xuất đúng giá trị khi tra cứu. Nếu nó đang được sử dụng và giá trị của bộ chứa bằng với giá trị chúng tôi muốn chèn [so sánh được thực hiện với cmp tích hợp sẵn], thì cặp khóa/giá trị đã có trong bảng băm và chúng tôi có thể trả về. Tuy nhiên, nếu các giá trị không khớp nhau, thì chúng ta phải tìm một nơi mới để đặt dữ liệu

Tiếp theo từ Danh sách và Bộ dữ liệu, tập hợp là một cấu trúc dữ liệu phổ biến khác thường gặp trong Python và có nhiều cách sử dụng khác nhau trong quy trình làm việc. Chúng có thể được sử dụng để lưu trữ nhiều mục trong một biến như danh sách hoặc bộ nhưng điểm khác biệt chính là chúng không có thứ tự và không thể chứa các giá trị trùng lặp. Điều này có nghĩa là chúng có thể hữu ích khi bạn chỉ muốn lưu trữ các giá trị duy nhất, không quan tâm đến việc duy trì thứ tự của các mục trong cấu trúc dữ liệu hoặc bạn muốn kiểm tra sự trùng lặp và khác biệt giữa các nguồn dữ liệu khác nhau. Các đặc điểm chính của cấu trúc dữ liệu này là

  • có thể thay đổi. Chúng có thể được thay đổi sau khi Bộ đã được tạo
  • không có thứ tự. Thứ tự của các mục trong một bộ không được ghi lại hoặc lưu giữ
  • Đã hủy lập chỉ mục. Vì chúng không có thứ tự nên chúng tôi không có chỉ mục mà chúng tôi có thể sử dụng để truy cập các mục cụ thể
  • Không thể chứa các giá trị trùng lặp. Các bộ không cho phép bạn chứa nhiều phiên bản có cùng giá trị

Những đặc điểm này sau đó ảnh hưởng đến cách chúng có thể được sử dụng trong chương trình của bạn. Chẳng hạn, bạn sẽ không muốn sử dụng chúng khi bạn muốn duy trì thứ tự mà bạn thêm các mục vào tập hợp, nhưng bạn có thể muốn sử dụng chúng khi bạn chỉ quan tâm đến việc thêm các mục duy nhất và muốn tiết kiệm dung lượng trong bộ nhớ

Thực hiện

Để tạo một tập hợp, chúng ta có thể sử dụng hai phương pháp chính

  • Sử dụng
    #use a loop to iteratre over the set
    for x in fruits:
    print[x]
    #out:
    cherry
    apple
    banana
    0 để đính kèm một nhóm các mục được phân tách bằng dấu phẩy mà chúng tôi muốn đưa vào tập hợp
  • Sử dụng hàm
    #use a loop to iteratre over the set
    for x in fruits:
    print[x]
    #out:
    cherry
    apple
    banana
    0 có thể được sử dụng để chuyển đổi các cấu trúc dữ liệu khác thành một tập hợp

Điều này có thể được thực hiện như

#create a set using curly brackets
fruits = {"apple", "banana", "cherry"}
#create a set using the set constructor
vegetables = set[["courgette", "potato", "aubergine"]]
#print the results
print[fruits]
print[type[fruits]]
print["\n"]print[vegetables]
print[type[vegetables]]
#out:
{'apple', 'banana', 'cherry'}



{'aubergine', 'courgette', 'potato'}

Từ điều này, chúng ta có thể thấy rằng mặc dù chúng ta có thể sử dụng ký hiệu

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
0 để tạo một tập hợp từ các đầu vào thô được phân tách bằng dấu phẩy, nhưng chúng ta đã sử dụng hàm
#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
0 để thay đổi một bộ thành một tập hợp cho thấy rằng chúng ta cũng có thể thay đổi các cấu trúc dữ liệu khác thành các tập hợp

Ta cũng có thể thấy rằng khi in bộ sản phẩm không nhất thiết phải xuất hiện theo thứ tự như khi nhập dữ liệu [cụ thể là bộ rau củ quả]. Điều này liên quan đến thực tế rằng nó là một cấu trúc dữ liệu không có thứ tự nên các mục sẽ không luôn xuất hiện theo cùng một thứ tự và vì vậy chúng tôi không thể truy cập các mục theo cách giống như cách chúng tôi làm với một danh sách

Truy cập các mục trong một bộ

Bởi vì các mục trong một bộ không có thứ tự nên chúng tôi không có chỉ mục cho các mục, vì vậy chúng tôi không thể truy cập chúng giống như cách chúng tôi làm với danh sách hoặc bộ. Do đó, có hai cách chính để kiểm tra xem một mục có nằm trong bộ hay không

Cách thứ nhất chỉ đơn giản là lặp qua tất cả các mục trong một bộ để in tất cả các mục, sau đó kiểm tra chúng và/hoặc thực hiện một giải pháp có lập trình để dừng khi mục mong muốn đã được xác định. Điều này có thể được thực hiện như sau

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana

Việc này có thể tốn nhiều công sức tính toán và nếu bạn phải kiểm tra tất cả các giá trị bằng mắt thì việc này có thể mất nhiều thời gian nếu bạn có một tập hợp rất lớn

Sau đó, cách khác là chỉ cần sử dụng từ khóa

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
3 trong python để kiểm tra xem giá trị bạn quan tâm có thực sự nằm trong tập hợp hay không. Điều này có thể được thực hiện như

#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True

Mà trong trường hợp này trả về

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
4 dưới dạng “quả táo” nằm trong tập hợp. Điều này làm cho cuộc sống dễ dàng hơn rất nhiều và tiết kiệm tài nguyên tính toán hơn là lặp qua toàn bộ tập hợp và do đó có thể được sử dụng để kích hoạt các đoạn mã khác bằng câu lệnh if, elif hoặc other chẳng hạn

khả năng biến đổi

Mặc dù các bộ có thể thay đổi được vì chúng có thể được thay đổi, nhưng các giá trị thực tế trong bộ không thể. Điều này có nghĩa là mặc dù bạn có thể thêm hoặc xóa các mục trong bộ, nhưng bạn không thể thay đổi các mục cụ thể vì chúng tôi không thể truy cập các mục thông qua chỉ mục của chúng

Do đó, chúng ta có thể thay đổi tập hợp bằng một số phương pháp khác nhau. Trước tiên chúng ta có thể tập trung vào việc thêm các mục vào bộ hiện có. Cách đầu tiên để làm điều này là sử dụng phương pháp

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
5 có thể được sử dụng để thêm các mục cụ thể vào tập hợp. Cách thứ hai là sử dụng phương pháp
#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
6 có thể được sử dụng để thêm một tập hợp khác vào một tập hợp hiện có. Cuối cùng, chúng ta cũng có thể sử dụng phương thức
#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
6 để thêm bất kỳ đối tượng có thể lặp lại nào vào tập hợp, chẳng hạn như bộ dữ liệu hoặc danh sách, nhưng điều này sẽ chỉ giữ lại các giá trị duy nhất. Chúng có thể được thực hiện như

#create a set using curly brackets
fruits = {"apple", "banana", "cherry"}
#create a set using the set constructor
vegetables = set[["courgette", "potato", "aubergine"]]
#print the results
print[fruits]
print[type[fruits]]
print["\n"]print[vegetables]
print[type[vegetables]]
#out:
{'apple', 'banana', 'cherry'}



{'aubergine', 'courgette', 'potato'}
0

Mặt khác, chúng tôi cũng có thể xóa các mục khỏi bộ nếu chúng tôi không còn muốn chúng ở đó nữa. Đối với điều này, chúng ta có thể sử dụng phương pháp

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
8 để xóa một giá trị cụ thể khỏi một tập hợp. Tuy nhiên, vấn đề với điều này là nếu mục không tồn tại trong tập hợp thì điều này sẽ gây ra lỗi và ngăn mã của bạn chạy. Do đó, chúng tôi cũng có thể sử dụng phương pháp
#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
9 sẽ không gây ra lỗi và do đó sẽ cho phép mã tiếp tục. Tất nhiên, việc lựa chọn những thứ này sẽ phụ thuộc vào việc bạn có muốn các hành động cụ thể xảy ra nếu mục đó có trong bộ hay không. Cuối cùng, chúng ta cũng có thể sử dụng phương pháp
#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
0, nhưng vì tập hợp không có thứ tự nên chúng ta không biết mục nào sẽ thực sự bị xóa

#create a set using curly brackets
fruits = {"apple", "banana", "cherry"}
#create a set using the set constructor
vegetables = set[["courgette", "potato", "aubergine"]]
#print the results
print[fruits]
print[type[fruits]]
print["\n"]print[vegetables]
print[type[vegetables]]
#out:
{'apple', 'banana', 'cherry'}



{'aubergine', 'courgette', 'potato'}
4

Chúng tôi cũng đã đưa vào phương thức

#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
1 để có thể xóa hoàn toàn tập hợp nếu bạn muốn hoặc hàm
#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
2 xóa hoàn toàn tập hợp

Chức năng bổ sung

Một yếu tố khác biệt quan trọng giữa các tập hợp và các cấu trúc dữ liệu khác là chúng không thể chứa các giá trị trùng lặp. Điều này có lợi chẳng hạn khi chúng tôi muốn giảm thiểu dung lượng chiếm dụng bởi thông tin, chúng tôi không muốn trùng lặp hoặc chúng tôi muốn tìm các giá trị duy nhất có trong thông tin. Ví dụ: nếu chúng tôi muốn thêm các giá trị trùng lặp vào danh sách và sau đó chỉ trích xuất các giá trị duy nhất, chúng tôi có thể sử dụng tập hợp làm

#create a set using curly brackets
fruits = {"apple", "banana", "cherry"}
#create a set using the set constructor
vegetables = set[["courgette", "potato", "aubergine"]]
#print the results
print[fruits]
print[type[fruits]]
print["\n"]print[vegetables]
print[type[vegetables]]
#out:
{'apple', 'banana', 'cherry'}



{'aubergine', 'courgette', 'potato'}
7

Tập hợp sẽ chỉ chứa các giá trị riêng lẻ từ các mục được chuyển

Điều này có ý nghĩa quan trọng khi chúng ta muốn nối hai tập hợp lại với nhau và có nhiều phương pháp để làm như vậy. Ví dụ: nếu chúng tôi muốn hợp nhất các tập hợp và giữ tất cả các giá trị duy nhất từ ​​mỗi tập hợp, chúng tôi có thể sử dụng phương pháp

#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
3 để tạo một tập hợp mới hoặc chúng tôi có thể sử dụng phương thức
#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
6 để thay đổi một tập hợp hiện có như sau

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
0

Một cách khác là chỉ giữ các bản sao xuất hiện trong cả hai bộ, có thể thực hiện bằng phương pháp

#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
5 nếu chúng tôi muốn tạo một bộ mới hoặc phương pháp
#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
6 nếu chúng tôi muốn cập nhật một et hiện có như sau

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
3

Hoặc cuối cùng, chúng ta có thể làm ngược lại điều này và trích xuất bất kỳ thứ gì ngoại trừ sao chép các giá trị duy nhất cho mỗi tập hợp. Điều này có thể được thực hiện bằng cách sử dụng phương pháp

#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
7 khi chúng tôi muốn tạo một bộ mới hoặc phương pháp
#or check whether the fruit you want is in the set
print["apple" in fruits]
#which acts the same way as if it were in a list
#out:
True
8 nếu chúng tôi muốn cập nhật một bộ hiện có

#use a loop to iteratre over the set
for x in fruits:
print[x]
#out:
cherry
apple
banana
6

Vì vậy, một hướng dẫn đầy đủ về các bộ trong Python. Từ đó, chúng ta có thể thấy rằng các bộ không có thứ tự, không được lập chỉ mục và không cho phép các giá trị trùng lặp. Cái sau là một đặc điểm quan trọng vì chúng có thể được sử dụng khi chúng ta chỉ muốn trích xuất các mục duy nhất từ ​​một thứ gì đó, thay vì có nhiều phiên bản của chúng, nhưng không thể được sử dụng khi chúng ta muốn giữ lại một thứ tự nhất định trong tập dữ liệu

Đây là bài viết thứ hai trong loạt bài khám phá Cấu trúc dữ liệu, cách sử dụng và triển khai chúng trong Python. Nếu bạn bỏ lỡ phần đầu tiên trên Danh sách trong Python, bạn có thể tìm thấy phần này tại các liên kết sau

Hướng dẫn đầy đủ về danh sách trong Python

Các tính năng chính, triển khai, lập chỉ mục, cắt, định vị một mục, khả năng thay đổi và các chức năng hữu ích khác

hướng tới khoa học dữ liệu. com

Các bài đăng trong tương lai sẽ đề cập đến từ điển, danh sách được liên kết, ngăn xếp, hàng đợi và biểu đồ trong Python. Để đảm bảo bạn không bỏ lỡ bất kỳ điều gì trong tương lai, hãy đăng ký để nhận thông báo qua email khi chúng được xuất bản

Nhận email bất cứ khi nào Philip Wilkinson xuất bản

Nhận email bất cứ khi nào Philip Wilkinson xuất bản. Bằng cách đăng ký, bạn sẽ tạo một tài khoản Medium nếu bạn chưa có…

philip-wilkinson. vừa phải. com

Và nếu bạn thích những gì bạn đọc và chưa phải là thành viên trung bình, hãy xem xét hỗ trợ cả tôi và cùng các tác giả tuyệt vời trên nền tảng này bằng cách đăng ký bằng mã giới thiệu của tôi bên dưới

Set[] hoạt động như thế nào trong Python?

set[] được sử dụng để chuyển đổi bất kỳ phần tử có thể lặp nào thành chuỗi các phần tử có thể lặp với các phần tử riêng biệt, thường được gọi là Set. .
cú pháp. đặt [có thể lặp lại]
Thông số. Bất kỳ chuỗi có thể lặp lại nào như danh sách, bộ dữ liệu hoặc từ điển
trả lại. Tập rỗng nếu không có phần tử nào được truyền

Làm thế nào được thiết lập thực hiện?

Có ba triển khai Set mục đích chung — HashSet , TreeSet và LinkedHashSet . Việc sử dụng cái nào trong số ba cái này nói chung là đơn giản. HashSet nhanh hơn nhiều so với TreeSet [thời gian không đổi so với thời gian đăng nhập cho hầu hết các hoạt động] nhưng không đảm bảo thứ tự.

Python triển khai kiểu dữ liệu đã đặt của nó như thế nào?

Tạo bộ Python . Nó có thể có bất kỳ số lượng mục nào và chúng có thể thuộc các loại khác nhau [số nguyên, số float, bộ, chuỗi, v.v. ]. A set is created by placing all the items [elements] inside curly braces {} , separated by comma, or by using the built-in set[] function. It can have any number of items and they may be of different types [integer, float, tuple, string etc.].

được thiết lập một xây dựng

Trong python, một tập hợp là một lớp dựng sẵn và hàm này là hàm tạo của lớp này. Nó được sử dụng để tạo một tập hợp mới bằng cách sử dụng các phần tử được truyền trong khi gọi. Nó nhận iterable làm đối số và trả về một đối tượng tập hợp mới. Cú pháp hàm tạo được đưa ra dưới đây.

Chủ Đề