Đề Xuất 12/2022 # Tìm Hiểu Các Cấu Trúc Dữ Liệu Trong Dart / 2023 # Top 17 Like | Comforttinhdauthom.com

Đề Xuất 12/2022 # Tìm Hiểu Các Cấu Trúc Dữ Liệu Trong Dart / 2023 # Top 17 Like

Cập nhật nội dung chi tiết về Tìm Hiểu Các Cấu Trúc Dữ Liệu Trong Dart / 2023 mới nhất trên website Comforttinhdauthom.com. Hy vọng thông tin trong bài viết sẽ đáp ứng được nhu cầu ngoài mong đợi của bạn, chúng tôi sẽ làm việc thường xuyên để cập nhật nội dung mới nhằm giúp bạn nhận được thông tin nhanh chóng và chính xác nhất.

Trong phần này chúng ta sẽ tìm hiểu một số cấu trúc dữ liệu cơ bản đã triển khai sẵn trong ngôn ngữ lập trình Dart:

Cấu trúc dữ liệu liệt kê enum

Trong Dart đây là một loại lớp đặc biệt, biểu diễn một tập hợp cố định các hằng số. Để tạo ra một enum dùng từ khóa enum khai báo các phần tử liệt kê theo tên cách nhau bởi , ví dụ:

enum UserGroup {guest, member, admin}

Enum rất tiện lợi dùng với câu lệnh switch

var user_group = UserGroup.admin; switch (user_group) { case UserGroup.admin: print('Quản trị hệ thống'); break; case UserGroup.guest: print('Khách'); break; default: }

Cấu trúc dữ liệu Iterable

Iterable là một lớp generic biểu diễn tập hợp dữ liệu mà có thể duyệt qua hết phần tử này đến phần tử khác. Nghĩa là nó hỗ trợ moveNext() để đi đến phần tử tiếp theo, lấy dữ liệu phần tử hiện tại bằng iterator.current

Thường thì Iterable được tạo ra, liên kết với một loại kiểu dữ liệu tập hợp khác như List, Map chúng tôi các loại cấu trúc dữ liệu này để tìm hiểu về Interable

Duyệt qua các phần tử Iterable

var iterable = new Iterable.generate(100); for (var item in iterable) { print(item); } ...

Hoặc duyệt qua bằng forEach

iterable.forEach((f) { print(f); });

Các phương thức / thuộc tính hay dùng trên mảng – danh sách

Cấu trúc dữ liệu Danh sách – Mảng – List

Trong Dart, danh sách (cũng là mảng) được định nghĩa từ lớp generic List, nó chứa một tập hợp các dữ liệu – mỗi dữ liệu trong List là gọi là phần tử, vị trí của nó xác định bằng chỉ số bắt đầu từ 0, truy cập đến mảng (danh sách) dùng ký hiệu[] chứa chỉ số phần tử.

Có 2 loại List, đó là loại mà số phần tử có thể thay đổi và loại list có số phần tử cố định

Khởi tạo một mảng cố định

var listState = new List(2); listState[0] = 'on'; listState[1] = 'off'; print(listState);

Khởi tạo một mảng thay đổi số phần tử được

Nếu khi khởi tảo mà không chỉ ra số lượng phần tử thì nó là mảng thay đổi số phần tử được, lúc này có thể áp dụng các hàm thêm, bớt phần tử sẽ nói phía dưới

var dow = new List(); dow.add('Monday'); dow.add('Tuesday'); dow.add('Thursday'); print(dow); dow.removeLast(); print(dow);

Nếu muốn tạo ra mảng thay đổi được, và khởi tạo luôn dữ liệu ở phần khai báo thì dùng ký hiệu []

var group = ['member', 'admin']; group.insert(0, 'guest'); print(group);

Các phương thức / thuộc tính hay dùng trên mảng – danh sách

Ngoài các phương thức – thuộc tính giống như Iterable chú ý thêm:

Cấu trúc dữ liệu – Map – Ánh xạ

Đây là kiểu tập hợp dữ liệu mà mỗi phần tử biểu diễn theo cặp key:value

Các phần tử của Map được truy cập bằng ký hiệu [] chứa key dạng map[key]

Khởi tạo Map có thể dùng toàn tử new hoặc khởi tạo luôn một số phần tử bằng {}

var student = { 'name':'Abc', 'age': 22, 'score': 'A' }; student['Subject'] = 'Abc'; print(student['name']);

Cũng hoàn tạo tạo ra Map từ toán tử new

var student = new Map(); student['age'] = 22; student['name'] = 'StudentA'; student['score'] = 'A'; student.forEach((key, value) { print('$key : có giá trị $value'); }); for (var key in student.keys) { print('$key : ${student[key]}'); }

Các phương thức / thuộc tính hay dùng trên Map

Ngoài các phương thức – thuộc tính giống như Iterable xem ở trên chú ý thêm:

Tập hợp – Set

Tập hợp như tên gọi là là tập hợp các phần tử, đảm bảo sao cho mỗi phần tử chỉ được xuất hiện 1 lần.

Khởi tạo một tập hợp bằng toán tử new với cú pháp

var s = Set();

Nó có các phương thức và cách duyệt qua phần tử giống phần trình bày Iterable ở trên.

Để thêm một phần tử vào tập hợp dùng hàm add(ele); để loại bỏ phần tử dùng hàm remove(ele);, kiểm tra xem có chứa phần tử bằng hàm contains(ele);

Một số cấu trúc dữ liệu phức tạp

Từ các cấu trúc dữ liệu trên, Dart xây dựng thêm các loại cấu trúc phức chứa trong thư viện dart:collection

Một số loại như: HashMap, HashSet, LinkedList …

Trước khi sử dụng các cấu trúc dữ liệu này cần nạp thư viện bằng lệnh sau ở đầu file

import 'dart:collection';

Hàng đợi – Queue

Với hàng đợi Queue thì chỉ tương tác với cấu trúc này ở đầu hàng đợi và cuối hàng đợi (thêm / bớt).

var q = new Queue(); q.add('A'); q.add('B'); q.addFirst('A0'); q.addLast('B0'); print(q); q.removeFirst(); q.removeLast(); q.remove('B');

HashMap

Sử dụng và ý nghĩa giống Map (khởi tạo new HashMap()), có có điều các đối tượng làm key phải cung cấp sự so sánh== thông qua giá trị .hashCode

HashMap sử dụng mã hash của đối tượng key để so sánh, tìm kiếm phần tử nên HashMap nhanh hơn khi dữ liệu key lớn

HashSet

Sử dụng và ý nghĩa giống Set (khởi tạo new HashSet()), so sánh == thông qua giá trị .hashCode

LinkedList

Sử dụng và ý nghĩa giống List (khởi tạo new LinkedList()), chỉ có điều nó lưu trữ dữ liệu theo cách tối ưu để duyệt qua, tìm kiếm nhanh, tốt để tương quản lý dữ liệu, như chèn và xóa một lượng lớn phần tử

Các Cấu Trúc Dữ Liệu Trong C++ / 2023

Một cấu trúc dữ liệu là một tập hợp của những kiểu dữ liệu khác nhau được gộp lại với một cái tên duy nhất. Dạng thức của nó như sau:

.

.

trong đó model_name là tên của mẫu kiểu dữ liệu và tham số tùy chọn object_name một tên hợp lệ cho đối tượng. Bên trong cặp ngoặc nhọn là tên các phần tử của cấu trúc và kiểu của chúng.

Nếu định nghĩa của cấu trúc bao gồm tham số model_name (tuỳ chọn), tham số này trở thành một tên kiểu hợp lệ tương đương với cấu trúc. Ví dụ:

struct products {

char name [30];

float price;

} ;

products apple;

products orange, melon;

Chúng ta đã định nghĩa cấu trúc products với hai trường: name và price, mỗi trường có một kiểu khác nhau. Chúng ta cũng đã sử dụng tên của kiểu cấu trúc ( products) để khai báo ba đối tượng có kiểu đó : apple, orange và melon.

Sau khi được khai báo, products trở thành một tên kiểu hợp lệ giống các kiểu cơ bản như int, char hay short.

Trường tuỳ chọn object_name có thể nằm ở cuối của phần khai báo cấu trúc dùng để khai báo trực tiếp đối tượng có kiểu cấu trúc. Ví dụ, để khai báo các đối tượng apple, orange và melon như đã làm ở phần trước chúng ta cũng có thể làm theo cách sau:

struct products {

char name [30];

float price;

} apple, orange, melon;

Hơn nữa, trong trường hợp này tham số model_name trở thành tuỳ chọn. Mặc dù nếu model_name không được sử dụng thì chúng ta sẽ không thể khai báo thêm các đối tượng có kiểu mẫu này.

Một điều quan trọng là cần phân biệt rõ ràng đâu là kiểu mẫu cấu trúc, đâu là đối tượng cấu trúc. Nếu dùng các thuật ngữ chúng ta đã sử dụng với các biến, kiểu mẫu là tên kiểu dữ liệu còn đối tượng là các biến.

Sau khi đã khai báo ba đối tượng có kiểu là một mẫu cấu trúc xác định ( apple, orange and melon) chúng ta có thể thao tác với các trường tạo nên chúng. Để làm việc này chúng ta sử dụng một dấu chấm (.) chèn ở giữa tên đối tượng và tên trường. Ví dụ, chúng ta có thể thao tác với bất kì phần tử nào của cấu trúc như là đối với các biến chuẩn :

apple.nameapple.priceorange.nameorange.pricemelon.namemelon.price

mỗi trường có kiểu dữ liệu tương ứng: apple.name, orange.name và melon.name có kiểu char[30], và apple.price, orange.price và melon.price có kiểu float.

Chúng ta tạm biệt apples, oranges và melons để đến với một ví dụ về các bộ phim:

Code:

// example about structures

struct movies_t {

char title [50];

int year;

} mine, yours;

void printmovie (movies_t movie);

int main ()

{

char buffer [50];

strcpy (mine.title, “2001 A Space Odyssey”);

mine.year = 1968;

cout << “Enter title: “;

cin.getline (yours.title,50);

cout << “Enter year: “;

cin.getline (buffer,50);

yours.year = atoi (buffer);

cout << “My favourite movie is:n “;

printmovie (mine);

cout << “And yours:n “;

printmovie (yours);

return 0;

}

void printmovie (movies_t movie)

{

cout << movie.title;

cout << ” (” << chúng tôi << “)n”;

}

Kết quả:

Enter title: Alien Enter year: 1979 My favourite movie is: 2001 A Space Odyssey (1968)And yours: Alien (1979)

Ví dụ này cho chúng ta thấy cách sử dụng các phần tử của một cấu trúc và bản thân cấu trúc như là các biến thông thường. Ví dụ, yours.year là một biến hợp lệ có kiểu int cũng như mine.title là một mảng hợp lệ với 50 phần tử kiểu chars.

Chú ý rằng cả mine and yours đều được coi là các biến hợp lệ kiểu movie_t khi được truyền cho hàm printmovie().Hơn nữa một lợi thế quan trọng của cấu trúc là chúng ta có thể xét các phần tử của chúng một cách riêng biệt hoặc toàn bộ cấu trúc như là một khối.

Các cấu trúc được sử dụng rất nhiều để xây dựng cơ sở dữ liệu đặc biệt nếu chúng ta xét đến khả năng xây dựng các mảng của chúng.

Code:

// array of structures

#define N_MOVIES 5

struct movies_t {

char title [50];

int year;

} films [N_MOVIES];

void printmovie (movies_t movie);

int main ()

{

char buffer [50];

int n;

for (n=0; n<N_MOVIES; n++)

{

cout << “Enter title: “;

cin.getline (films[n].title,50);

cout << “Enter year: “;

cin.getline (buffer,50);

films[n].year = atoi (buffer);

}

cout << “nYou have entered these movies:n”;

for (n=0; n<N_MOVIES; n++)

printmovie (films[n]);

return 0;

}

void printmovie (movies_t movie)

{

cout << movie.title;

cout << ” (” << chúng tôi << “)n”;

}

Kết quả:

Enter title: Alien Enter year: 1979 Enter title: Blade Runner Enter year: 1982 Enter title: Matrix Enter year: 1999 Enter title: Rear Window Enter year: 1954 Enter title: Taxi Driver Enter year: 1975 You have entered these movies:Alien (1979)Blade Runner (1982)Matrix (1999)Rear Window (1954)Taxi Driver (1975)

Con trỏ trỏ đến cấu trúc

Như bất kì các kiểu dữ liệu nào khác, các cấu trúc có thể được trỏ đến bởi con trỏ. Quy tắc hoàn toàn giống như đối với bất kì kiểu dữ liệu cơ bản nào:

struct movies_t {

char title [50];

int year;

};

movies_t amovie;

movies_t * pmovie;

Ở đây amovie là một đối tượng có kiểu movies_t và pmovie là một con trỏ trỏ tới đối tượng movies_t. OK, bây giờ chúng ta sẽ đến với một ví dụ khác, nó sẽ giới thiệu một toán tử mới:

Code:

// pointers to structures

struct movies_t {

char title [50];

int year;

};

int main ()

{

char buffer[50];

movies_t amovie;

movies_t * pmovie;

pmovie = & amovie;

cout << “Enter title: “;

cout << “Enter year: “;

cin.getline (buffer,50);

cout << “nYou have entered:n”;

return 0;

}

Kết quả:

Enter title: Matrix Enter year: 1999 You have entered:Matrix (1999)

nó có thể được dịch thành:

(*movies).title

*movies.title

nó tương đương với

*(movies.title)

Các cấu trúc lồng nhau

Các cấu trúc có thể được đặt lồng nhau vì vậy một phần tử hợp lệ của một cấu trúc có thể là một cấu trúc khác.

struct movies_t {

char title [50];

int year;

}

struct friends_t {

char name [50];

char email [50];

movies_t favourite_movie;

} charlie, maria;

friends_t * pfriends = &charlie;

Vì vậy, sau phần khai báo trên chúng ta có thể sử dụng các biểu thức sau:

(trong đó hai biểu thức cuối cùng là tương đương).

Các khái niệm cơ bản về cấu trúc được đề cập đến trong phần này là hoàn toàn giống với ngôn ngữ C, tuy nhiên trong C++, cấu trúc đã được mở rộng thêm các chức năng của một lớp với tính chất đặc trưng là tất cả các phần tử của nó đều là công cộng (public). Bạn sẽ có thêm các thông tin chi tiết trong phần 4.1, Lớp.

Cấu Trúc Dữ Liệu Trong Python / 2023

Các kiểu dữ liệu cơ bản trong Python bao gồm kiểu số nguyên (int), kiểu số thực (float), kiểu chuỗi (string) và kiểu logic (boolean). Với các kiểu dữ liệu cơ bản này, chúng ta có thể viết các ứng dụng đơn giản với Python.

Với các ứng dụng có số lượng các biến nhiều, dữ liệu lớn chúng ta cần tới các cấu trúc dữ liệu giúp cho việc viết code ngắn gọn và hiệu quả. Trong Python có 4 kiểu cấu trúc dữ liệu là List, Tuple, Set và Dictionary.

Tại sao cấu trúc dữ liệu cần thiết

Cấu trúc dữ liệu được sử dụng trong các chương trình để dễ dàng hơn trong việc định vị thông tin và lấy thông tin. Cấu trúc dữ liệu là cách các ngôn ngữ lập trình thể hiện các giá trị cơ bản, chúng chứa các kiểu dữ liệu cơ bản như số, chuỗi, boolean…, nó đưa ra cách thức lưu trữ nhiều giá trị trong một biến số.

Cấu trúc dữ liệu cũng được sử dụng để phân nhóm và tổ chức cho các cấu trúc khác.

1.1 Định nghĩa và cách sử dụng List

List là một tập dữ liệu đơn giản nhất trong Python, một List là một danh sách các thành phần dữ liệu được phân cách bởi dấu phẩy và được bao ngoài bởi dấu ngoặc vuông. List có thể chứa các con số hoặc các chuỗi.

Chú ý: Một danh sách có thể chứa nhiều loại dữ liệu khác nhau nếu bạn thấy cần thiết, tuy nhiên nên dừng một loại dữ liệu thống nhất cho các phần tử trong danh sách.

members = ["Dung",25,"Duc"]

1.2 Truy xuất phần tử trong List

Mỗi phần tử trong List sẽ có một vị trí nhất định tương ứng với một con số, bắt đầu từ số 0 và tăng dần. Chúng ta có thể truy xuất đến các phần tử trong danh sách với cú pháp:

Trong ví dụ trên, để truy xuất đến tên Van, chúng ta thực hiện như sau:

Chú ý: Nếu bạn truy xuất đến một phần tử không có trong danh sách, một lỗi sẽ xuất hiện có dạng “index out of range”.

1.3 Danh sách đa chiều

Mỗi phần tử trong danh sách của Python có thể là một danh sách, ví dụ như danh sách sau đây, mỗi phần tử là một danh sách gồm tên và tuổi của bạn bè.

Trong Python không giới hạn số chiều của danh sách cũng như số phần tử danh sách có thể chứa, nó chỉ phụ thuộc vào dung lượng bộ nhớ máy tính bạn dùng để chạy ứng dụng.

Chú ý, với các danh sách dài, chúng ta nên trình bày mỗi phần tử trên một dòng, như vậy code chương trình sẽ dễ đọc hơn, ví dụ:

Trong quá trình thao tác với danh sách, chúng ta cần: kiểm tra xem danh sách có chứa một phần tử nào đó không, đếm số phần tử hoặc thêm , xóa, sửa phần tử trong danh sách… Các yêu cầu này đều có toán tử hoặc các phương thức được xây dựng sẵn trong đối tượng List.

1.4.1 Toán tử in

Toán tử in cho phép bạn kiểm tra một phần tử có nằm trong một danh sách hay không. Ví dụ: Kiểm tra xem “Dung” có trong danh sách members không?

1.4.2 Hàm len()

Hàm len() trả về số phần tử có trong một danh sách.

1.4.3 Một số phương thức trên Model List

.append() thêm một phần tử vào vị trí cuối cùng trong List:

.insert(position, item) chèn một phần tử vào List tại vị trí cho trước.

Các phần tử phía sau sẽ có vị trí tăng lên 1, cần chú ý khi truy xuất giá trị các phần tử này.

listname[index]=newvalue Thay đổi giá trị một phần tử có vị trí index trong List.

.extend() Kết hợp danh sách với một List khác.

.remove() Loại bỏ một phần tử khỏi List.

.pop(index) Loại bỏ phần tử ở vị trí index cho trước trong List.

del Xóa một phần tử hoặc toàn bộ danh sách

.clear() Xóa sạch các phần tử trong danh sách

Chú ý, .clear() khác với del, .clear() xóa toàn bộ các phần tử trong List, còn del xóa luôn cả biến List.

.count() Đếm số lần một phần tử xuất hiện trong List.

.index() Trả về vị trí phần tử trong List

.sort() sắp xếp các phần tử trong List.

Mặc định sắp xếp tăng dần với dữ liệu chuỗi sẽ sắp xếp a-z, A-Z, với số 0-9. Để sắp xếp giảm dần sử dụng tham số reverse = True.

reverse() Đảo ngược thứ tự các phần tử trong List.

.copy() Copy toàn bộ List.

Python hỗ trợ một cấu trúc dữ liệu cũng tương tự với List có tên là Tuple, chỉ có một khác biệt Tuple là danh sách bất biến, không thể thay đổi nội dung. Tức là ngay sau khi định nghĩa Tuple, bạn không thể thay đổi nó.

2.1 Khai báo Tuple

Định nghĩa một Tuple cũng giống như định nghĩa một List trong Python, chỉ khác là thay vì sử dụng ngoặc vuông chúng ta sử dụng ngoặc tròn.

Python cho phép định nghĩa Tuple mà không cần sử dụng dấu ngoặc thường. Ví dụ:

Thậm chí Tuple chỉ có một phần tử:

Chú ý dấu phẩy, nếu không có dấu phẩy thì đây là định nghĩa một chuỗi.

2.2 Thao tác với Tuple

Tuple là một danh sách đặc biệt, không thể thay đổi khi đã tạo ra, do đó bạn có thể sử dụng tất cả các kỹ thuật, các hàm như với List nhưng loại trừ những hàm tác động thay đổi nội dung.

Ví dụ, bạn có thể sử dụng toán tử in, hàm len() với Tuple:

Tất cả các phương thức .append(), .extend(), .clear(), .copy(), .insert(), .pop(), .remove(), .reverse(), .sort() không sử dụng được với cấu trúc dữ liệu Tuple.

Chú ý: Không thể thay đổi Tuple nhưng có thể tạo ra một Tuple từ hai Tuple, ví dụ :

2.3 Tại sao sử dụng Tuple

Tuple có những hạn chế là khi tạo ra không thể thay đổi được tuy nhiên Tuple lại có những ưu điểm sau:

Tuple có tốc độ xử lý nhanh hơn List, do Tuple được lưu trữ một khối bộ nhớ xác định còn List thì thường xuyên phải thay đổi không gian lưu trữ. Nếu bạn định nghĩa một tập các giá trị là hằng số thì nên chọn Tuple.

Sử dụng Tuple giúp code an toàn hơn, khi đó chế độ “write-protect” giúp cho dữ liệu không thể thay đổi. Do vậy nên lựa chọn cho những dữ liệu dạng hằng số, dữ liệu không thay đổi theo thời gian.

Tuple còn được sử dụng làm khóa trong Dictionary do nó chứa các giá trị không đổi, List không được sử dụng làm khóa cho Dictionary.

All Rights Reserved

Các Cấu Trúc Dữ Liệu Trong Python Bạn Cần Học / 2023

Các cấu trúc dữ liệu trong Python bạn cần học

Để tiện cho việc tìm hiểu ta sẽ đi qua các đề mục sau: 

Cấu trúc dữ liệu là gì?

Các kiểu cấu trúc dữ liệu trong Python

Cấu trúc dữ liệu tích hợp

Danh sách (List)

Từ điển (Dictionary)

Tuple

Sets

Cấu trúc dữ liệu do người dùng xác định

Arrays vs. List

Stack

Queue

Trees

Linked Lists

Graphs

HashMaps

Cấu trúc dữ liệu là gì?

Các kiểu cấu trúc dữ liệu trong Python

Các kiểu cấu trúc dữ liệu trong Python

Python có hỗ trợ ngầm cho Cấu trúc dữ liệu cho phép bạn lưu trữ và truy cập dữ liệu. Các cấu trúc này được gọi là List, Dictionary, Tuple và Set.

Python cho phép người dùng tạo Cấu trúc dữ liệu của riêng họ, cho phép toàn quyền kiểm soát chức năng. Các cấu trúc dữ liệu nổi bật nhất là Stack, Queue, Tree, Linked List, v.v. đồng thời cũng có sẵn trong các ngôn ngữ lập trình khác. Vì vậy, bây giờ bạn đã biết các loại có sẵn bao gồm những gì, vậy còn ngại gì việc dùng Cấu trúc dữ liệu và triển khai chúng bằng Python.

Cấu trúc dữ liệu tích hợp (Built-in Data Structures)

Lists

Data Structure dạng Lists

Lists được sử dụng để lưu trữ dữ liệu của các loại dữ liệu khác nhau một cách tuần tự. Có các địa chỉ được gán cho mọi thành phần của danh sách, được gọi là Index. Giá trị chỉ mục bắt đầu từ 0 và tiếp tục cho đến khi phần tử cuối cùng được gọi là chỉ số dương. Ngoài ra còn có lập chỉ mục tiêu cực bắt đầu từ -1 cho phép bạn truy cập các phần tử từ cuối đến trước. Xem qua ví dụ bên dưới để hiểu rõ hơn Tạo một Lists: Để tạo danh sách, bạn sử dụng dấu ngoặc vuông và thêm các yếu tố vào đó. Nếu bạn không vượt qua bất kỳ yếu tố nào trong dấu ngoặc vuông, bạn sẽ nhận được một danh sách trống làm đầu ra.

1

my_list = [] #create empty list

2

print(my_list)

3

my_list = [1, 2, 3, ‘example’, 3.132] #creating list with data

4

print(my_list)

Output:  [] [1, 2, 3, ‘example’, 3.132]

Thêm các yếu tố:

Thêm các yếu tố trong danh sách có thể đạt được bằng cách sử dụng các hàm append (), extend () và insert ().

Hàm append () thêm tất cả các phần tử được truyền vào nó dưới dạng một phần tử.

Hàm extend () thêm từng phần tử vào danh sách.

Hàm insert () thêm phần tử được truyền vào giá trị chỉ mục và tăng kích thước của danh sách.

1

my_list = [1, 2, 3]

2

print(my_list)

3

my_list.append([555, 12]) #add as a single element

4

print(my_list)

5

my_list.extend([234, ‘more_example’]) #add as different elements

6

print(my_list)

7

my_list.insert(1, ‘insert_example’) #add element i

8

print(my_list)

Output: [1, 2, 3] [1, 2, 3, [555, 12]] [1, 2, 3, [555, 12], 234, ‘more_example’] [1, ‘insert_example’, 2, 3, [555, 12], 234, ‘more_example’] Xóa các yếu tố:

Để xóa các thành phần, hãy sử dụng từ khóa del được tích hợp sẵn trong Python nhưng điều này không trả lại bất cứ điều gì cho chúng tôi.

Nếu bạn muốn phần tử quay lại, bạn sử dụng hàm pop () lấy giá trị chỉ mục.

Để loại bỏ một phần tử theo giá trị của nó, bạn sử dụng hàm remove ().

Ví dụ:

1

my_list = [1, 2, 3, ‘example’, 3.132, 10, 30]

2

del my_list[5] #delete element at index 5

3

print(my_list)

4

my_list.remove(‘example’) #remove element with value

5

a = my_list.pop(1) #pop element from list

6

a = my_list.pop(1) #pop element from list

7

print(‘Popped Element: ‘, a, ‘ List remaining: ‘, my_list)

8

my_list.clear() #empty the list

9

print(my_list)

Output: [1, 2, 3, ‘example’, 3.132, 30] [1, 2, 3, 3.132, 30] Popped Element: 2 List remaining: [1, 3, 3.132, 30] [] Yếu tố truy cập: Truy cập các phần tử giống như truy cập Chuỗi (Strings) trong Python. Bạn vượt qua các giá trị index và do đó có thể có được các giá trị khi cần thiết.

1

my_list = [1, 2, 3, ‘example’, 3.132, 10, 30]

2

for element in my_list: #access elements one by one

3

    print(element)

4

print(my_list) #access all elements

5

print(my_list[3]) #access index 3 element

6

print(my_list[0:2]) #access elements from 0 to 1 and exclude 2

7

print(my_list[::-1]) #access elements in reverse

Output: 1 2 3 example 3.132 10 30 [1, 2, 3, ‘example’, 3.132, 10, 30] example [1, 2] [30, 10, 3.132, ‘example’, 3, 2, 1] Các chức năng khác: Bạn có một số chức năng khác có thể được sử dụng khi làm việc với cấu trúc dữ liệu trong Python này.

Hàm len () trả về cho chúng ta độ dài của list.

Hàm index () tìm giá trị chỉ mục của giá trị được truyền vào nơi nó đã gặp lần đầu tiên.

Hàm Count () tìm số đếm của giá trị được truyền cho nó.

Các hàm được sắp xếp () và sort () thực hiện cùng một việc, đó là sắp xếp các giá trị của danh sách. Sắp xếp () có kiểu trả về trong khi sort () sửa đổi list ban đầu.

1

my_list = [1, 2, 3, 10, 30, 10]

2

print(len(my_list)) #find length of list

3

print(my_list.index(10)) #find index of element that occurs first

4

print(my_list.count(10)) #find count of the element

5

print(sorted(my_list)) #print sorted list but not change original

6

my_list.sort(reverse=True) #sort original list

7

print(my_list)

Output: 6 3 2 [1, 2, 3, 10, 10, 30] [30, 10, 10, 3, 2, 1]

Dictionary

Trong các cấu trúc dữ liệu trong Python, Dictionary được sử dụng để lưu trữ các cặp key-value. Để hiểu rõ hơn, hãy nghĩ đến một thư mục điện thoại nơi hàng trăm và hàng ngàn tên và số tương ứng của chúng đã được thêm vào. Bây giờ các giá trị không đổi ở đây là Tên và Số điện thoại được gọi là các phím. Và các tên và số điện thoại khác nhau là các giá trị đã được đưa vào các phím. Nếu bạn truy cập các giá trị của các phím, bạn sẽ nhận được tất cả tên và số điện thoại. Vì vậy, đó là những gì một cặp key-value. Và trong Python, cấu trúc này được lưu trữ bằng Dictionary. Để dễ hiểu hơn chúng ta cùng xét ví dụ. Tạo một từ điển Từ điển có thể được tạo bằng cách sử dụng dấu ngoặc hoa hoặc sử dụng hàm dict (). Bạn cần thêm các cặp khóa-giá trị bất cứ khi nào bạn làm việc với từ điển.

1

my_dict = {} #empty dictionary

2

print(my_dict)

3

my_dict = {1: ‘Python’, 2: ‘Java’} #dictionary with elements

4

print(my_dict)

Output: {} {1: ‘Python’, 2: ‘Java’} Thay đổi và thêm khóa, cặp giá trị Để thay đổi các giá trị của từ điển, bạn cần phải làm điều đó bằng cách sử dụng các phím. Vì vậy, trước tiên bạn truy cập khóa và sau đó thay đổi giá trị cho phù hợp. Để thêm giá trị, bạn chỉ cần thêm một cặp key-value khác như hiển thị bên dưới:

1

my_dict = {‘First’: ‘Python’, ‘Second’: ‘Java’}

2

print(my_dict)

3

my_dict[‘Second’] = ‘C++’ #changing element

4

print(my_dict)

5

my_dict[‘Third’] = ‘Ruby’ #adding key-value pair

6

print(my_dict)

Output: {‘First’: ‘Python’, ‘Second’: ‘Java’} {‘First’: ‘Python’, ‘Second’: ‘C++’} {‘First’: ‘Python’, ‘Second’: ‘C++’, ‘Third’: ‘Ruby’}

Xóa khóa, cặp giá trị Để xóa các giá trị, bạn sử dụng hàm pop () trả về giá trị đã bị xóa. Để truy xuất cặp khóa-giá trị, bạn sử dụng hàm popitem () trả về một bộ khóa và giá trị. Để xóa toàn bộ Dictionary, bạn sử dụng hàm clear (). Output: Value: Ruby Dictionary: {‘First’: ‘Python’, ‘Second’: ‘Java’}

Key, value pair: (‘Second’, ‘Java’) Dictionary {‘First’: ‘Python’}

{} Yếu tố truy cập Bạn chỉ có thể truy cập các yếu tố bằng cách sử dụng các phím. Bạn có thể sử dụng hàm get () hoặc chỉ truyền các giá trị chính và bạn sẽ truy xuất các giá trị.

1

my_dict = {‘First’: ‘Python’, ‘Second’: ‘Java’}

2

print(my_dict[‘First’]) #access elements using keys

3

print(my_dict.get(‘Second’))

Output: Python Java Các chức năng khác Trong chức năng của cấu trúc dữ liệu trong Python này, bạn có các hàm khác nhau trả về cho chúng ta các khóa hoặc các giá trị của cặp key-value tương ứng với các hàm khóa (), giá trị (), vật phẩm () tương ứng.

1

my_dict = {‘First’: ‘Python’, ‘Second’: ‘Java’, ‘Third’: ‘Ruby’}

2

print(my_dict.keys()) #get keys

3

print(my_dict.values()) #get values

4

print(my_dict.items()) #get key-value pairs

5

print(my_dict.get(‘First’))

Output: dict_keys([‘First’, ‘Second’, ‘Third’]) dict_values([‘Python’, ‘Java’, ‘Ruby’]) dict_items([(‘First’, ‘Python’), (‘Second’, ‘Java’), (‘Third’, ‘Ruby’)]) Python

Tuple (các bộ dữ liệu)

 

So sánh Data List và Data Tuple

Tuples giống như các list với ngoại lệ là dữ liệu một khi được nhập vào bộ dữ liệu không thể thay đổi bất kể điều gì. Ngoại lệ duy nhất là khi dữ liệu bên trong Tuple có thể thay đổi, chỉ sau đó dữ liệu Tuple có thể được thay đổi. Xem ví dụ để hiểu rõ hơn: Tạo một tuple Bạn tạo một tuple bằng cách sử dụng dấu ngoặc đơn hoặc

1

my_tuple = (1, 2, 3) #create tuple

2

print(my_tuple) 

Output: (1, 2, 3) Yếu tố truy cập Truy cập các phần tử giống như để truy cập các giá trị trong lists.

1

my_tuple2 = (1, 2, 3, ‘growupwork’) #access elements

2

for x in my_tuple2:

3

    print(x)

4

print(my_tuple2)

5

print(my_tuple2[0])

6

print(my_tuple2[:])

7

print(my_tuple2[3][4])

Output: 1 2 3 growupwork (1, 2, 3, ‘growupwork’) 1 (1, 2, 3, ‘growupwork’) e Các yếu tố bổ sung Để nối thêm các giá trị, bạn sử dụng toán tử ‘+, sẽ mất một tuple khác để được thêm vào nó.

1

my_tuple = (1, 2, 3)

2

my_tuple = my_tuple + (4, 5, 6) #add elements

3

print(my_tuple)

Output: (1, 2, 3, 4, 5, 6) Các chức năng khác Các chức năng này giống như những chức năng của lists.

1

my_tuple = (1, 2, 3, [‘hindi’, ‘python’])

2

my_tuple[3][0] = ‘english’

3

print(my_tuple)

4

print(my_tuple.count(2))

5

print(my_tuple.index([‘english’, ‘python’]))

Output: (1, 2, 3, [‘english’, ‘python’]) 1 3

Sets

Cấu trúc dữ liệu dạng Sets trong Python Tạo một sets Các sets được tạo bằng cách sử dụng các dấu ngoặc hoa nhưng thay vì thêm các cặp key-value, bạn chỉ cần truyền các giá trị cho nó.

1

my_set = {1, 2, 3, 4, 5, 5, 5} #create set

2

print(my_set)

Output: {1, 2, 3, 4, 5} Thêm các yếu tố Để thêm các phần tử, bạn sử dụng hàm add () và truyền giá trị cho nó.

1

my_set = {1, 2, 3}

2

my_set.add(4) #add element to set

3

print(my_set)

Output: {1, 2, 3, 4} Hoạt động theo sets

1

my_set = {1, 2, 3, 4}

2

my_set_2 = {3, 4, 5, 6}

3

4

5

6

7

my_set.clear()

8

print(my_set)

Hàm union () kết hợp dữ liệu có trong cả hai sets.

Hàm giao nhau () chỉ tìm thấy dữ liệu trong cả hai sets.

Hàm differ () xóa dữ liệu có trong cả hai và dữ liệu đầu ra chỉ có trong tập được truyền.

Hàm symmetric_difference () thực hiện giống như hàm differ () nhưng xuất ra dữ liệu còn lại trong cả hai sets.

Output: {1, 2, 3, 4, 5, 6} ———- {1, 2, 3, 4, 5, 6} {3, 4} ———- {3, 4} {1, 2} ———- {1, 2} {1, 2, 5, 6} ———- {1, 2, 5, 6} set()

Vậy giờ đây, bạn đã hiểu về tích hợp các Cấu trúc dữ liệu (built-in Data Structures), hãy để bắt đầu với Cấu trúc dữ liệu do người dùng xác định – loại lớn thứ hai của cấu trúc dữ liệu trong Python. Cấu trúc dữ liệu do người dùng định nghĩa, chính tên cho thấy người dùng xác định cách thức Cấu trúc dữ liệu sẽ hoạt động và xác định các chức năng trong đó. Điều này cung cấp cho người dùng toàn quyền kiểm soát cách dữ liệu cần được lưu, thao tác và vv.

Chúng ta hãy tiếp tục tìm hiểu và  nghiên cứu các Cấu trúc dữ liệu nổi bật nhất trong hầu hết các ngôn ngữ lập trình.

User-Defined Data Structures (Cấu trúc dữ liệu do người dùng xác định)

Arrays vs. Lists

Arrays vs. Lists cùng một cấu trúc với một sự khác biệt. Lists cho phép lưu trữ phần tử dữ liệu không đồng nhất trong khi Arrays chỉ cho phép các phần tử đồng nhất được lưu trữ bên trong chúng. Trong đó. Một Arrays về cơ bản là một cấu trúc dữ liệu có thể chứa nhiều hơn một giá trị tại một thời điểm. Nó là một tập hợp hoặc loạt các yếu tố được đặt cùng loại. Ví dụ:

1 a=arr.array(‘d’,[1.2,1.3,2.3])

Stack

Cấu trúc dữ liệu dạng Stack trong Python

Stacks là các cấu trúc dữ liệu tuyến tính dựa trên nguyên tắc Last-In-First-Out (LIFO) trong đó dữ liệu được nhập sau cùng sẽ là dữ liệu đầu tiên được truy cập. cấu trúc dữ liệu trong Python này được xây dựng bằng cách sử dụng cấu trúc mảng (array)và có các hoạt động cụ thể là đẩy (thêm) các phần tử, popping (xóa) các phần tử và chỉ truy cập các phần tử từ một điểm trong Stacks được gọi là TOP. TOP này là con trỏ đến vị trí hiện tại của Stacks. Stacks được sử dụng nổi bật trong các ứng dụng như Recursive Programming, đảo ngược các từ, hoàn tác các cơ chế trong trình soạn thảo văn bản, v.v.

Queue

Cấu trúc dữ liệu dạng Queue trong Python

Queue cũng là một cấu trúc dữ liệu tuyến tính dựa trên nguyên tắc Nhập trước xuất trước (FIFO) trong đó dữ liệu được nhập trước sẽ được truy cập trước. Nó được xây dựng bằng cấu trúc array và có các thao tác có thể được thực hiện từ cả hai đầu của Queue, nghĩa là đầu-đuôi hoặc mặt trước. Các hoạt động như thêm và xóa các phần tử được gọi là En-Queue và De-Queue và truy cập các phần tử có thể được thực hiện. Queue được sử dụng làm Bộ đệm mạng (Network Buffers) để quản lý tắc nghẽn lưu lượng, được sử dụng trong Hệ điều hành để Lên lịch công việc và nhiều hơn nữa.

Tree

Cấu trúc dữ liệu dạng cây trong Python

Tree là cấu trúc dữ liệu phi tuyến tính có gốc và nút. Root là nút từ nơi dữ liệu bắt nguồn và các nút là các điểm dữ liệu khác có sẵn cho chúng ta. Nút có trước là cha và nút sau được gọi là con. Có những cấp độ mà một Tree phải thể hiện độ sâu của thông tin. Các nút cuối cùng được gọi là leaf. Tree tạo ra một hệ thống phân cấp có thể được sử dụng trong rất nhiều ứng dụng trong thế giới thực như các trang HTML sử dụng Tree để phân biệt thẻ nào nằm dưới khối nào. cấu trúc dữ liệu trong Python này cũng hiệu quả trong mục đích tìm kiếm và nhiều hơn nữa.

Danh sách liên kết (Linked List)

Cấu trúc dữ liệu dạng Linked trong Python

Linked List là Cấu trúc dữ liệu tuyến tính không được lưu trữ do đó được liên kết với nhau bằng cách sử dụng con trỏ. Nút của danh sách được liên kết bao gồm dữ liệu và con trỏ được gọi là “Next”. Các cấu trúc này được sử dụng rộng rãi nhất trong các ứng dụng xem hình ảnh, ứng dụng nghe nhạc và vv.

Đồ thị (Graph)

Cấu trúc dự liệu dạng Graph trong Python

Đồ thị được sử dụng để lưu trữ dữ liệu thu thập các điểm được gọi là đỉnh (nút) và cạnh (cạnh). Đồ thị có thể được gọi là đại diện chính xác nhất của bản đồ thế giới thực. Chúng được sử dụng để tìm khoảng cách cost-to-distance khác nhau giữa các điểm dữ liệu khác nhau được gọi là các nút và do đó tìm được đường dẫn ít nhất. Nhiều ứng dụng như Google Maps, Uber và nhiều ứng dụng khác sử dụng Biểu đồ để tìm khoảng cách ít nhất và tăng lợi nhuận theo những cách tốt nhất.

HashMaps

HashMaps giống như từ điển trong Python. Chúng có thể được sử dụng để thực hiện các ứng dụng như danh bạ, điền dữ liệu theo danh sách và nhiều hơn nữa

Gợi ý tìm việc:

Chúng ta vừa đi qua tất cả các Cấu trúc dữ liệu trong Python nổi bật nhất. GrowUpWork hy vọng bạn đã hiểu cấu trúc dữ liệu tích hợp cũng như Cấu trúc dữ liệu do người dùng định nghĩa mà chúng ta có trong Python và tại sao chúng quan trọng.

Bạn đang đọc nội dung bài viết Tìm Hiểu Các Cấu Trúc Dữ Liệu Trong Dart / 2023 trên website Comforttinhdauthom.com. Hy vọng một phần nào đó những thông tin mà chúng tôi đã cung cấp là rất hữu ích với bạn. Nếu nội dung bài viết hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!