Cấu trúc dữ liệu rất cần thiết trong lập trình. Chúng được sử dụng để tổ chức, lưu trữ và quản lý dữ liệu theo cách hiệu quả để truy cập và sửa đổi.
Hãy tưởng tượng bạn giặt quần áo hàng tuần. Tốt nhất, bạn để riêng tất, tees, quần tây và đồ nguội vào các ngăn kéo riêng để dễ lấy vào buổi sáng trước khi ra ngoài. Bạn đang chuẩn bị sẵn sàng với một cấu trúc dữ liệu. Bây giờ, hãy tưởng tượng ném tất cả những đồ đạc đó vào bên trong một ngăn kéo duy nhất hoặc nhiều ngăn kéo mà không có tổ chức. Bạn nghĩ sẽ mất bao lâu để bạn có thể đi làm hay đi chơi một đêm? Điều này đã sẵn sàng mà không có cấu trúc dữ liệu.
Trong bài viết này, chúng tôi đi sâu vào các cấu trúc dữ liệu tích hợp sẵn mà Python cung cấp.
Cấu trúc dữ liệu tích hợp trong Python
Cấu trúc dữ liệu tích hợp trong Python bao gồm danh sách, từ điển, bộ giá trị và bộ.
Danh sách
Danh sách là cấu trúc dữ liệu có thể thay đổi (có khả năng thay đổi) có thể có các phần tử hoặc bộ phận khác nhau. Nói cách khác, một danh sách có thể chứa nhiều kiểu dữ liệu khác nhau.
list =['string', 300, (2, 4), 'kiểu dữ liệu trước đó là một tuple']
Cấu trúc dữ liệu danh sách có 11 phương pháp được sử dụng để thêm, bớt hoặc thao tác chính danh sách.
Thêm phần tử vào danh sách
- append ():Phương thức append () thêm một mục vào danh sách
list =['string, next là tupel', (2, 1), 3] list.append (500) print (list) # print ['string, next là tupel', (2, 1), 3 , 500]
- expand ():Phương thức expand () nối danh sách theo tất cả các mục từ có thể lặp lại. Nó khác với append () theo cách sau.
list =['string, next là tupel', (2, 1), 3] list.append ((8, 9)) print (list) # print ['string, next là tupel', (2, 1), 3, (8, 9)] # Lưu ý rằng append () để lại (8, 9) dưới dạng một tuple
list =['string, next là tupel', (2, 1), 3] list.extend ((8, 9)) print (list) # print ['string, next là tupel', (2, 1), 3, 8, 9] # Lưu ý rằng extension () không để (8, 9) dưới dạng một tuple
- insert ():Phương thức insert () chèn một mục tại một vị trí hoặc chỉ mục nhất định. Đối số đầu tiên là chỉ mục của phần tử cần được chèn vào, đối số thứ hai là chính phần tử đó.
list =['string, next là tupel', (2, 1), 3] list.insert (0, 700) print (list) # print [700, 'string, next là tupel', (2, 1), 3] # đã chèn 700 vào chỉ mục 0
Xóa các phần tử khỏi danh sách
- remove ():Phương thức remove () xóa mục đầu tiên trong danh sách có chứa giá trị mà nó đã được cung cấp.
list =['string, next là tupel', (2, 1), 3, 8, 3] list.remove (3) print (list) # print ['string, next là tupel', (2, 1), 8, 3]
- pop ():Phương thức pop () loại bỏ một giá trị ở vị trí mà nó đã được cung cấp, tuy nhiên, nếu không có chỉ mục nào được cung cấp, nó sẽ loại bỏ mục cuối cùng.
list =['string, next là tupel', (2, 1), 3] list.pop (0) print (list) # print [(2, 1), 3]
list =['string, next là tupel', (2, 1), 3] list.pop () print (list) # print ['string, next là tupel', (2, 1)]
- clear ():Phương thức clear () không có đối số. Nó xóa tất cả các mục khỏi danh sách.
list =['string, next là tupel', (2, 1), 3] list.clear () print (list) # print []
Các phương pháp danh sách khác
- index ():Phương thức index () trả về chỉ mục của giá trị đã cho.
list =[8, 20, 1, 9, 2, 3, 937, 0] print (list.index (9)) # print 3
- count ():Phương thức count () đếm số lần một giá trị xuất hiện trong danh sách.
list =[8, 20, 1, 8, 2, 8, 937, 8] print (list.count (8)) # in 4
- sort ():Phương thức sort () có thể được sử dụng có hoặc không có đối số và có thể được sử dụng để tùy chỉnh sắp xếp.
list =[8, 20, 1, 9, 2, 3, 937, 0] list.sort () print (list) # print [0, 1, 2, 3, 8, 9, 20, 937]
list =[8, 20, 1, 9, 2, 3, 937, 0] list.sort (reverse =True) print (list) # print [937, 20, 9, 8, 3, 2, 1 , 0]
- reverse ():Phương thức ngược sẽ đảo ngược vị trí các phần tử của danh sách, giống như phương thức sắp xếp ở trên có đối số sắp xếp tùy chỉnh.
list =[8, 20, 1, 9, 2, 3, 937, 0] list.reverse () print (list) # print [0, 937, 3, 2, 9, 1, 20, 8]
- copy ():Phương thức copy () chỉ trả về một bản sao của danh sách.
list =[8, 20, 1, 9, 2, 3, 937, 0] list.copy () print (list) # print [8, 20, 1, 9, 2, 3, 937, 0]
Tuples
Bộ giá trị là dữ liệu được đặt trong dấu ngoặc đơn. Không giống như danh sách, chúng không thể thay đổi (có nghĩa là nó không có khả năng thay đổi) và chúng nhanh hơn danh sách. Bởi vì chúng là bất biến, chúng tôi cũng có thể sử dụng chúng làm khóa trong từ điển. Tuples cũng có thể được sử dụng bất cứ khi nào chúng ta muốn trả về nhiều kết quả từ một hàm.
Chúng ta có thể thêm dữ liệu vào một bộ dữ liệu bằng cách sử dụng phép nối.
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia chương trình đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
tuple =(1, 2, 3) print (tuple) # print (1, 2, 3) tuple =tuple + (4, 5, 6) print (tuple) # print (1, 2, 3, 4 , 5, 6)
Từ điển
Từ điển là cấu trúc dữ liệu chứa các cặp giá trị chính giống như các đối tượng trong JavaScript. Giống như danh sách, các cấu trúc dữ liệu này có thể thay đổi, nghĩa là chúng ta có thể thay đổi dữ liệu của nó.
Ví dụ về cặp giá trị quan trọng là các đặc điểm của một người và mô tả các đặc điểm đó. Tên, tuổi, chiều cao và cân nặng đều có thể là chìa khóa. Josh, 33, 5’10, 180 lbs, đều có thể là giá trị cho các khóa đó.
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'}
Vì từ điển có thể thay đổi, chúng tôi có thể thay đổi ‘Josh’ thành một tên khác.
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} dict ['name'] ='Patrick' print (dict) # print {'name':'Patrick', 'age':33, 'height':"5'10", 'weight':'180 lbs'}
Chúng ta có thể thêm các giá trị bằng cách tạo các cặp giá trị khóa mới.
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} dict ['location'] ='San Francisco' print (dict) # print {'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs', 'location':'San Francisco'}
Chúng tôi cũng có thể xóa các cặp giá trị khóa trong từ điển bằng cách sử dụng các phương thức từ khóa del, pop () hoặc popitem (). Lưu ý rằng với từ điển, pop () phải có một đối số, vì vậy chúng ta cần popitem () để loại bỏ cặp giá trị khóa cuối cùng khỏi từ điển.
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} del dict ['name'] print (dict) # bản in {'tuổi':33, 'chiều cao':"5'10", 'trọng lượng':'180 lbs'}
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} dict.pop ('name') print (dict ) # bản in {'tuổi':33, 'chiều cao':"5'10", 'trọng lượng':'180 lbs'}
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} dict.popitem () print (dict) # bản in {'name':'Josh', 'age':33, 'height':"5'10"}
Chúng tôi cũng có thể chỉ in các khóa hoặc chỉ các giá trị của từ điển.
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} print (dict.keys ()) # in dict_keys (['tên', 'tuổi', 'chiều cao', 'cân nặng'])
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} print (dict.values ()) # in dict_values (['Josh', 33, "5'10", '180 lbs'])
Để in dưới dạng các cặp giá trị khóa, chúng ta có thể sử dụng phương thức items ().
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs'} print (dict.items ()) # print dict_items ([('name', 'Josh'), ('age', 33), ('height', "5'10"), ('weight', '180 lbs')])
Bộ
Tập hợp là tập hợp các phần tử duy nhất có thể thay đổi, không có thứ tự, nghĩa là chúng không bao gồm các phần tử trùng lặp. Bộ trông giống như từ điển ở chỗ chúng đều chứa dữ liệu trong dấu ngoặc nhọn, nhưng không giống như từ điển, bộ không có cặp giá trị khóa.
set ={1, 2, 2, 2, 3, 3, 4, 4} print (set) # print {1, 2, 3, 4}
Chúng ta có thể thêm các phần tử vào tập hợp bằng cách sử dụng phương thức add ().
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add (5) print (set) # print {1, 2, 3, 4, 5}
Có bốn phương thức khác có sẵn cho chúng tôi khi sử dụng tập hợp, union (), giao điểm (), khác biệt () và đối xứng_difference ().
- union ():Phương thức union () hợp nhất hai tập hợp khác biệt, lấy điểm chung của cả hai và tạo ra nó như một tập hợp duy nhất không có bản sao.
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add (5) print (set) # print {1, 2, 3, 4, 5} anotherSet ={3, 3, 4, 4, 5, 5, 6} print (set.union (anotherSet)) # bản in {1, 2, 3, 4, 5, 6}
- giao nhau ():Phương thức giao điểm tìm các phần tử chung trong cả hai tập hợp.
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add (5) print (set) # print {1, 2, 3, 4, 5} anotherSet ={3, 3, 4, 4, 5, 5, 6} print (set.intersection (anotherSet)) # bản in {3, 4, 5}
- difference ():Phương thức khác biệt thực hiện ngược lại với phương thức giao nhau ở chỗ nó loại bỏ tất cả các điểm chung và in ra những gì còn lại từ tập hợp đầu tiên.
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add (5) print (set) # print {1, 2, 3, 4, 5} anotherSet ={3, 3, 4, 4, 5, 5, 6} print (set.difference (anotherSet)) # bản in {1, 2}
- Treatric_difference ():Phương thức đối xứng_difference () giống với phương thức khác biệt ngoại trừ chúng ta nhận được sự khác biệt của cả hai tập hợp trong đầu ra.
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add (5) print (set) # print {1, 2, 3, 4, 5} anotherSet ={3, 3, 4, 4, 5, 5, 6} print (set.symmetric_difference (anotherSet)) # bản in {1, 2, 6}