Để hiểu vòng lặp so với danh sách Python

Giả sử, chúng tôi muốn tách các chữ cái của từ

['h', 'u', 'm', 'a', 'n']
7 và thêm các chữ cái dưới dạng các mục của danh sách. Điều đầu tiên xuất hiện trong đầu là sử dụng vòng lặp for

ví dụ 1. Lặp qua một chuỗi Sử dụng for Loop

h_letters = []

for letter in 'human':
    h_letters.append[letter]

print[h_letters]

Khi chúng ta chạy chương trình, đầu ra sẽ là

['h', 'u', 'm', 'a', 'n']

Tuy nhiên, Python có một cách dễ dàng hơn để giải quyết vấn đề này bằng cách sử dụng tính năng Hiểu danh sách. Hiểu danh sách là một cách tao nhã để xác định và tạo danh sách dựa trên danh sách hiện có

Hãy xem cách chương trình trên có thể được viết bằng cách sử dụng khả năng hiểu danh sách

ví dụ 2. Lặp lại qua một chuỗi bằng cách sử dụng tính năng hiểu danh sách

h_letters = [ letter for letter in 'human' ]
print[ h_letters]

Khi chúng ta chạy chương trình, đầu ra sẽ là

['h', 'u', 'm', 'a', 'n']

Trong ví dụ trên, một danh sách mới được gán cho biến h_letters và danh sách chứa các mục của chuỗi lặp 'human'. Chúng tôi gọi hàm

['h', 'u', 'm', 'a', 'n']
8 để nhận đầu ra

Cú pháp hiểu danh sách

[expression for item in list]

Bây giờ chúng ta có thể xác định nơi sử dụng tính năng hiểu danh sách

Nếu bạn để ý,

['h', 'u', 'm', 'a', 'n']
7 là một chuỗi, không phải một danh sách. Đây là sức mạnh của việc hiểu danh sách. Nó có thể xác định khi nào nó nhận được một chuỗi hoặc một bộ và hoạt động trên đó giống như một danh sách

Bạn có thể làm điều đó bằng cách sử dụng các vòng lặp. Tuy nhiên, không phải mọi vòng lặp đều có thể được viết lại dưới dạng hiểu danh sách. Nhưng khi bạn học và cảm thấy thoải mái với việc hiểu danh sách, bạn sẽ thấy mình ngày càng thay thế nhiều vòng lặp bằng cú pháp tao nhã này

Liệt kê khả năng hiểu so với chức năng Lambda

Hiểu danh sách không phải là cách duy nhất để làm việc trên danh sách. Nhiều hàm tích hợp sẵn và hàm lambda có thể tạo và sửa đổi danh sách với ít dòng mã hơn

ví dụ 3. Sử dụng các hàm Lambda bên trong Danh sách

________số 8_______

Khi chúng ta chạy chương trình, đầu ra sẽ là

['h','u','m','a','n']

Tuy nhiên, khả năng hiểu danh sách thường dễ đọc hơn so với hàm lambda. Sẽ dễ hiểu hơn những gì lập trình viên đang cố gắng thực hiện khi sử dụng khả năng hiểu danh sách

Điều kiện trong danh sách hiểu

Khả năng hiểu danh sách có thể sử dụng câu lệnh có điều kiện để sửa đổi danh sách hiện có [hoặc các bộ dữ liệu khác]. Chúng tôi sẽ tạo danh sách sử dụng toán tử toán học, số nguyên và phạm vi []

Ví dụ 4. Sử dụng if với Danh sách hiểu

number_list = [ x for x in range[20] if x % 2 == 0]
print[number_list]

Khi chúng ta chạy chương trình trên, đầu ra sẽ là

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Danh sách, number_list, sẽ được điền bởi các mục trong phạm vi từ 0-19 nếu giá trị của mục đó chia hết cho 2

Ví dụ 5. IF lồng nhau với khả năng hiểu danh sách

num_list = [y for y in range[100] if y % 2 == 0 if y % 5 == 0]
print[num_list]

Khi chúng ta chạy chương trình trên, đầu ra sẽ là

['h', 'u', 'm', 'a', 'n']
0

Ở đây, kiểm tra mức độ hiểu danh sách

  1. Y có chia hết cho 2 hay không?
  2. Y có chia hết cho 5 hay không?

Nếu y thỏa mãn cả hai điều kiện, y sẽ được thêm vào num_list

Ví dụ 6. nếu. khác với việc hiểu danh sách

['h', 'u', 'm', 'a', 'n']
1

Khi chúng ta chạy chương trình trên, đầu ra sẽ là

['h', 'u', 'm', 'a', 'n']
2

Ở đây phần đọc danh sách sẽ kiểm tra 10 số từ 0 đến 9. Nếu i chia hết cho 2, thì

h_letters = [ letter for letter in 'human' ]
print[ h_letters]
0 được thêm vào danh sách obj. Nếu không,
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
1 được thêm vào

Các vòng lặp lồng nhau trong việc hiểu danh sách

Giả sử, chúng ta cần tính toán chuyển vị của một ma trận yêu cầu vòng lặp for lồng nhau. Trước tiên hãy xem cách nó được thực hiện bằng cách sử dụng vòng lặp for bình thường

Ví dụ 7. Hoán đổi Ma trận bằng cách sử dụng Vòng lặp lồng nhau

['h', 'u', 'm', 'a', 'n']
3

đầu ra

['h', 'u', 'm', 'a', 'n']
4

Đoạn mã trên sử dụng hai vòng lặp for để tìm chuyển vị của ma trận

Chúng ta cũng có thể thực hiện phép lặp lồng nhau trong phần hiểu danh sách. Trong phần này, chúng ta sẽ tìm hiểu phép hoán vị của một ma trận bằng cách sử dụng vòng lặp lồng nhau bên trong khả năng hiểu danh sách

Ví dụ 8. Hoán đổi ma trận bằng cách sử dụng tính năng hiểu danh sách

['h', 'u', 'm', 'a', 'n']
5

Khi chúng ta chạy chương trình trên, đầu ra sẽ là

['h', 'u', 'm', 'a', 'n']
6

Trong chương trình trên, chúng ta có một ma trận biến có

h_letters = [ letter for letter in 'human' ]
print[ h_letters]
2 hàng và
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
3 cột. Chúng ta cần tìm chuyển vị của ma trận. Đối với điều đó, chúng tôi đã sử dụng hiểu danh sách

**Ghi chú. Các vòng lặp lồng nhau trong phần hiểu danh sách không hoạt động như các vòng lặp lồng nhau thông thường. Trong chương trình trên,

h_letters = [ letter for letter in 'human' ]
print[ h_letters]
4 được thực thi trước
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
5. Do đó, lúc đầu, một giá trị được gán cho i sau đó mục được hướng dẫn bởi
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
6 được thêm vào biến chuyển vị

Khả năng hiểu danh sách có giống như vòng lặp for không?

Sự khác biệt giữa khả năng hiểu danh sách và vòng lặp for. Vòng lặp for là một cách phổ biến để lặp qua một danh sách. Mặt khác, việc hiểu danh sách là một cách hiệu quả hơn để lặp qua danh sách vì nó yêu cầu ít dòng mã hơn.

Tại sao bạn có thể sử dụng khả năng hiểu danh sách thay vì vòng lặp trong Python?

Việc hiểu danh sách cũng mang tính khai báo hơn vòng lặp, nghĩa là chúng dễ đọc và dễ hiểu hơn . Vòng lặp yêu cầu bạn tập trung vào cách tạo danh sách. Bạn phải tạo danh sách trống theo cách thủ công, lặp qua các phần tử và thêm từng phần tử vào cuối danh sách.

Khả năng đọc chính tả có nhanh hơn vòng lặp không?

Việc hiểu danh sách và từ điển không chỉ giúp mã ngắn gọn và dễ đọc hơn mà còn nhanh hơn các vòng lặp for truyền thống .

Cái nào nhanh hơn vòng lặp for trong Python?

Một cách nhanh hơn để lặp trong Python là sử dụng các hàm tích hợp sẵn . Trong ví dụ của chúng tôi, chúng tôi có thể thay thế vòng lặp for bằng hàm tổng. Hàm này sẽ tính tổng các giá trị bên trong dãy số. Đoạn mã trên mất 0. 84 giây.

Chủ Đề