Cấu trúc dữ liệu trong khoa học máy tính là các định dạng chuyên dụng để lưu trữ dữ liệu một cách hiệu quả và có tổ chức. Nó cũng cho phép dễ dàng truy cập và sửa đổi dữ liệu
Cấu trúc dữ liệu không phụ thuộc vào ngôn ngữ, nhưng hôm nay chúng ta sẽ thảo luận về hai trong số các cấu trúc dữ liệu ngầm định được hỗ trợ bởi Python – List và Tuples
Hãy nhớ cách bạn sử dụng danh sách việc cần làm được tổ chức tốt để giữ cho cuộc sống của bạn rõ ràng và ít phức tạp hơn. Các cấu trúc dữ liệu này hoạt động trên cùng một nguyên tắc. Họ hỗ trợ truy cập tuần tự, tôi. e. , Người dùng chỉ có thể truy cập các giá trị mà chúng chứa theo một thứ tự cụ thể
Hãy đi sâu hơn vào định nghĩa chính của hai cấu trúc và sau đó chúng ta sẽ thảo luận về các đặc điểm nổi bật của chúng và phân tích chúng khác nhau như thế nào
Danh sách
Một danh sách trong lập trình Python là một trong những cấu trúc dữ liệu phổ biến và được sử dụng nhiều nhất.
Không giống như các ngôn ngữ lập trình khác như C++ hoặc Java có một mảng tĩnh lưu trữ các giá trị cùng loại, Python có một mảng động và linh hoạt hơn được gọi là “danh sách”, tự động tăng hoặc giảm tỷ lệ khi thêm và xóa các phần tử
Các lập trình viên sử dụng cấu trúc dữ liệu linh hoạt này để lưu trữ dữ liệu không đồng nhất theo trình tự. Dữ liệu được phân tách bằng dấu phẩy [,] và được lưu trữ trong dấu ngoặc vuông [ ]. Nó là một công cụ mạnh mẽ được nhúng với tính năng lập chỉ mục và nhiều tính năng khác giúp dễ dàng truy cập, sửa đổi và xóa các phần tử
Ví dụ.
Sample_List = [12, -1. 56, 5. 12, [-8, 23, ”a”, ”b”], ”CodingNinjas”]
Tuple
Bộ dữ liệu là một cấu trúc dữ liệu được sử dụng nhiều nhất khác trong Python và nó cũng hỗ trợ đặc biệt lưu trữ nhiều phần tử, tôi. e. , dữ liệu không đồng nhất trong một biến duy nhất, giống như Danh sách
Một bộ được tạo bằng cách đặt tất cả các phần tử bên trong dấu ngoặc đơn [], được phân tách bằng dấu phẩy. Dấu ngoặc đơn là tùy chọn. Tuy nhiên, đó là một thực hành tốt để sử dụng chúng
Ví dụ
Sample_Tuple = [-3, -1. 56, 27, [-8, 23,”a”,”b”],”CodingNinjas”]
Cho đến bây giờ, chúng tôi chỉ có một cái nhìn tổng quan về các nguyên tắc cơ bản của danh sách và bộ dữ liệu. Hãy đi sâu hơn vào các tính năng nổi bật của từng loại và so sánh các thông số mà chúng giống và khác nhau
Hãy bắt đầu với những điểm tương đồng trước
Điểm tương đồng trong Tuple vs Danh sách
Các loại phần tử
- Danh sách hoặc Tuple không nhất thiết phải luôn đồng nhất;
- Các đối tượng được lưu trữ trong cả hai có thể thuộc bất kỳ loại nào như int, char, float, string, bao gồm cả loại nothing xác định Không có từ khóa
- Chúng cũng có thể chứa các giá trị trùng lặp
- Danh sách có thể lưu trữ bộ dữ liệu và tương tự như vậy, bộ dữ liệu có thể lưu trữ danh sách.
- Trong các bộ dữ liệu lồng nhau, một bộ dữ liệu có thể giữ nhiều bộ dữ liệu hơn. Và trong danh sách lồng nhau, một danh sách có thể có nhiều danh sách hơn
- Ví dụ
Có thứ tự hoặc không có thứ tự
- Danh sách và Bộ dữ liệu đều là cấu trúc dữ liệu có thứ tự, có nghĩa là nếu chúng ta tạo bất kỳ cấu trúc dữ liệu nào trong số này, hãy in ra kết quả. Kết quả sẽ theo cùng thứ tự mà chúng tôi đã nhập ban đầu.
- Dưới đây, mã Python hiển thị các tính năng được sắp xếp theo thứ tự của Danh sách và Tuple
#LIST
fruits_list=["apple","banana","mango","grapes"]
print["Fruit List is: ",fruits_list]
#TUPLE
colour_tuple=["red","blue","green","yellow"]
print["Colour Tuple is: ",colour_tuple]
Output:
Fruit List is: ['apple', 'banana', 'mango', 'grapes']
Colour Tuple is: ['red', 'blue', 'green', 'yellow']
- Bạn có thể quan sát từ đầu ra ở trên rằng cả danh sách và bộ dữ liệu đều duy trì thứ tự đầu vào của chúng.
Dễ dàng truy cập các yếu tố
- Python hỗ trợ các ký hiệu Lập chỉ mục và Cắt lát trong các cấu trúc dữ liệu tuần tự như danh sách và bộ dữ liệu để dễ dàng truy cập các phần tử
- Lập chỉ mục cho phép truy cập và sửa đổi một ô, sử dụng dấu ngoặc vuông [ ] và vị trí của phần tử mong muốn
- Python sử dụng lập chỉ mục dựa trên số không. Điều đó có nghĩa là phần tử đầu tiên có chỉ số là 0;
- Nó cũng hỗ trợ lập chỉ mục tiêu cực. Vì vậy, thay vì sử dụng các chỉ số từ 0 trở lên, chúng ta có thể sử dụng các chỉ số từ -1 trở xuống
- Từ bên dưới, Mã Python. Hãy xem nó hoạt động như thế nào.
#INDEXING IN LIST
fruits_list = ["apple", "banana", "mango", "grapes"]
print["fruits_list output: "]
print[fruits_list[0]] #shows 0-based indexing
print[fruits_list[-2]] #negative indexing
print[]
#INDEXING IN TUPLE
colour_tuple = ["red", "blue", "green", "yellow"]
print["colour_tuple output: "]
print[colour_tuple[1]]
print[colour_tuple[-1]]
Output:
fruits_list output:
apple
mango
colour_tuple output:
blue
yellow
- Lập chỉ mục hoạt động trên một phần tử hoặc ô. Ngược lại, Cắt lát hoạt động trên nhiều ô cùng một lúc
- Cắt lát trích xuất một phần của danh sách hoặc bộ dữ liệu. Giả sử L là một danh sách, thì L[m. n] trả về một phần của L.
- Nó bắt đầu từ chỉ số thứ m và đi lên đến n-1, i. e. , không bao gồm chỉ số thứ n
- Việc cắt lát cũng có thể được thực hiện bằng cách sử dụng chỉ mục tiêu cực
- Mã Python bên dưới hiển thị Ký hiệu cắt trong Danh sách và Tuple
#INDEXING IN LIST
fruits_list = ["apple", "banana", "mango", "grapes"]
print["fruits_list output: "]
print[fruits_list[0 : 2]] #shows 0-based slicing
print[fruits_list[-3 : -1]] #slicing using negative index
print[]
#INDEXING IN TUPLE
colour_tuple = ["red", "blue", "green", "yellow"]
print["colour_tuple output: "]
print[colour_tuple[1 : ]] #This will slice till the last index
print[colour_tuple[-4 : -2]]
Output:
fruits_list output:
['apple', 'banana']
['banana', 'mango']
colour_tuple output:
['blue', 'green', 'yellow']
['red', 'blue']
Sau khi xem xét những điểm tương đồng giữa List và Tuple cho đến nay, bây giờ chúng ta sẽ làm sáng tỏ các thông số khiến Tuple và List khác nhau
Sự khác biệt trong Tuple so với Danh sách
Sự khác biệt về cú pháp
Chúng tôi đã thảo luận điều này trong định nghĩa chính của tuple so với danh sách. Danh sách được tạo bằng cách đặt các giá trị khác nhau của nhiều loại trong dấu ngoặc vuông [ ], trong khi Tuple sử dụng dấu ngoặc đơn [ ]
Mã Python để tạo danh sách
#Empty List
sample_list1=[]
print["EMPTY LIST: ",sample_list1]
#List with heterogeneous data items
sample_list2 = [1, 2, "abc", "def", 4]
print["LIST: ", sample_list2]
#List with Nested List
sample_list3 = [[1, 2], [3, 4], ["a", "b"]]
print["NESTED LIST: ",sample_list3]
Output:
EMPTY LIST: []
LIST: [1, 2, 'abc', 'def', 4]
NESTED LIST: [[1, 2], [3, 4], ['a', 'b']]
Mã Python để tạo Tuple
#Empty Tuple
sample_tuple1 = []
print["EMPTY TUPLE: ",sample_tuple1]
#Tuple with heterogeneous data items
sample_tuple2 = ["abc", "def", 4, 5, 6]
print["TUPLE: ", sample_tuple2]
#Tuple with Nested Tuples
sample_tuple3 = [[1, 2], [3, 4], ["a", "b"]]
print["NESTED TUPLE: ",sample_tuple3]
Output:
EMPTY TUPLE: []
TUPLE: ['abc', 'def', 4, 5, 6]
NESTED TUPLE: [[1, 2], [3, 4], ['a', 'b']]
khả năng biến đổi
Khả năng thay đổi là sự khác biệt đáng kể nhất giữa Danh sách và Tuple
- Danh sách có thể thay đổi, trong khi Tuples là bất biến
- Danh sách có thể thay đổi nghĩa là chúng ta có thể thay đổi hoặc sửa đổi các phần tử hoặc một phần của danh sách
Trong khi Tuples là bất biến, các phần tử của Tuple không thể được sửa đổi sau khi được gán.
- Danh sách hỗ trợ tất cả các chức năng như loại bỏ, sửa đổi và xóa một phần tử hoặc toàn bộ danh sách, trong khi việc loại bỏ các phần tử riêng lẻ trong bộ dữ liệu là không thể;
- Mã Python bên dưới hiển thị kiểm tra khả năng thay đổi của cả Danh sách và Tuple
#Let’s try to change list elements
sample_list = [1, 2, "abc", "def", 4]
print["Original List: ", sample_list]
sample_list[2] = "codingninjas"
print["Changed List: ", sample_list]
print[]
#Lets try to change tuple elements
sample_tuple = ["abc", "def", 4, 5, 6]
print["Original Tuple: ", sample_tuple]
sample_tuple[2] = "codingninjas"
print["Changed Tuple: ", sample_tuple]
Output:
Original List: [1, 2, 'abc', 'def', 4]
Changed List: [1, 2, 'codingninjas', 'def', 4]
Original Tuple: ['abc', 'def', 4, 5, 6]
Traceback [most recent call last]:
File "", line 11, in
TypeError: 'tuple' object does not support item assignment.
TypeError chỉ ra rằng tuple là bất biến và nó không thay đổi không gian bộ nhớ được cấp phát sau khi được gán
Sử dụng bộ nhớ
- Bộ dữ liệu được tạo nhanh hơn danh sách
- Tại sao như vậy?
- Bất kể việc triển khai như thế nào, các danh sách có kích thước thay đổi, trong khi tuple là một cấu trúc bất biến có kích thước cố định, không mở rộng thêm bộ nhớ được phân bổ của nó sau khi khai báo ban đầu.
- Do đó, cuối cùng, Mức tiêu thụ bộ nhớ theo bộ ít hơn so với Danh sách
Phương pháp tích hợp
- Các phương thức tích hợp là các chương trình được xác định trước bằng ngôn ngữ lập trình mà người dùng có thể sử dụng trực tiếp mà không phải lo lắng về việc triển khai nó
- Danh sách và Tuple chỉ chia sẻ hai phương thức tích hợp, chỉ mục[] và đếm[]. Ngoài ra, chỉ có danh sách hỗ trợ các phương thức tích hợp khác nhau như append[], pop[], remove[], insert[], v.v. , do bản chất có thể thay đổi của nó
Mã Python bên dưới hiển thị các chức năng của các phương thức tích hợp
#Built-in Methods
#Lists
sample_list = [1, 3, 4, "abc", "def", [8, 9]]
ans = sample_list.index[3]
print["Index of element 3 in sample_list:", ans]
#Tuple
sample_tuple = [2, 4, [1, 2], [6, 7]]
ans = sample_tuple.index[4]
print["Index of element 4 in sample_tuple:", ans]
#Let’s check what if element is not present
ans = sample_list.index[5]
print["Index of element 5 in sample_list: ", ans]
Output:
Index of element 3 in sample_list: 1
Index of element 4 in sample_tuple: 1
Traceback [most recent call last]:
File "", line 11, in
ValueError: 5 is not in list
ValueError cho biết phần tử được yêu cầu không có trong danh sách hoặc bộ dữ liệu
Bảng tham chiếu cho Tuple so với Danh sách
Vì chúng ta đã đề cập đến mọi khía cạnh của danh sách và bộ dữ liệu, đồng thời biết được chúng giống và khác nhau như thế nào trong các ngữ cảnh khác nhau, nên hãy tạo một bảng giữa chúng để tham khảo nhanh
LISTTUPLEDanh sách là một tập hợp có thứ tự các phần tử không đồng nhất trong một biến duy nhất. Tuple cũng là một tập hợp có thứ tự các phần tử tùy ý trong một biến duy nhất. Dấu ngoặc vuông [ ] với các phần tử được phân tách bằng dấu phẩy tạo danh sách. Dấu ngoặc đơn [ ] và các phần tử được phân tách bằng dấu phẩy tạo bộ dữ liệu. Danh sách có thể thay đổi. Tuples là bất biến. Danh sách được lưu trữ dưới dạng các khối bộ nhớ riêng biệt được liên kết với nhau bằng con trỏ. Do đó, nó tiêu tốn nhiều dung lượng bộ nhớ hơn. Các bộ dữ liệu được lưu trữ trong các không gian bộ nhớ đơn và nhỏ hơn. Danh sách hỗ trợ các phương thức tích hợp khác nhau như append[],pop[],insert[],remove[],clear[] ,index[],count[], v.v. Tuples chỉ hỗ trợ hai phương thức tích hợp, index[] và count[]. Danh sách là một cấu trúc dữ liệu có kích thước thay đổi và linh hoạt hơn. Tuple có kích thước cố định và do tính chất bất biến của nó, nó chống lại sự thay đổi. Từ điển không hỗ trợ danh sách làm khóa do tính chất có thể thay đổi của nó. Từ điển sử dụng các bộ dữ liệu làm khóa do tính chất có thể băm và không thay đổi của chúngNếu bạn đang tìm kiếm nội dung có cấu trúc để tìm hiểu kiến thức cơ bản về python, bạn có thể xem Đường dẫn có hướng dẫn về Kiến thức cơ bản về Python.
Đường dẫn có Hướng dẫn là một trong những ngành dọc trong CodeStudio. Nó là một nền tảng được phát triển bởi một số người đam mê đầy tham vọng và các chuyên gia làm việc có kinh nghiệm trong các công ty như Google, Amazon, Microsoft. Tại CodeStudio, bạn gặp các vấn đề phỏng vấn, kinh nghiệm phỏng vấn và các vấn đề thực hành có thể giúp bạn đạt được công việc mơ ước của mình.
Các câu hỏi thường gặp
Sự khác biệt giữa bộ dữ liệu Python và danh sách là gì?
Bộ và Danh sách là tập hợp có thứ tự của các mục dữ liệu khác nhau trong một biến, nhưng điểm khác biệt chính là danh sách có thể thay đổi, trong khi bộ dữ liệu là bất biến
Danh sách hoặc bộ dữ liệu nào nhanh hơn?
Bộ dữ liệu nhanh hơn danh sách
Tại sao một bộ nhanh hơn một danh sách trong Python?
Bộ dữ liệu nhanh hơn vì Python phân bổ bộ nhớ cho bộ dữ liệu trong một không gian nhỏ và duy nhất, trong khi đối với danh sách, bộ nhớ được cấp phát trong các khối khác nhau được liên kết bởi con trỏ
Bộ dữ liệu có thể chứa danh sách không?
Có, bộ dữ liệu có thể chứa danh sách và danh sách có thể chứa bộ dữ liệu
Chúng ta có thể thay đổi một danh sách bên trong một tuple không?
Không, bộ dữ liệu là bất biến, vì vậy nội dung của chúng không thể thay đổi
Chìa khóa rút ra
List và Tuples đều là những cấu trúc dữ liệu linh hoạt và được sử dụng nhiều nhất của Python
Ở đây, Bài viết này giải thích ngắn gọn những điểm tương đồng và khác biệt chính giữa bộ dữ liệu và danh sách trong các ngữ cảnh khác nhau. Vì vậy, Chúng tôi đã bắt đầu với các định nghĩa cơ bản và cú pháp đã học để tạo danh sách và bộ
Sau đó, chúng tôi đã thảo luận về các tính năng tương tự như loại phần tử được lưu trữ trong cả hai, dễ dàng truy cập dữ liệu, v.v. , tiếp theo là sự khác biệt quan trọng về khả năng thay đổi, sử dụng bộ nhớ và các phương thức tích hợp
Cuối cùng, một bảng được tạo để tham khảo nhanh và tóm tắt để sửa đổi tất cả các điểm chính được thảo luận trong bài viết