Vòng lặp để ánh xạ Python

Nhưng trong Python, thực tế có nhiều cách để đạt được cùng một mục tiêu. Tất nhiên, một số cách thanh lịch hơn những cách khác và trong hầu hết các trường hợp, rõ ràng cách nào tốt hơn

Chúng ta sẽ xem xét khả năng hiểu danh sách và cách chúng có thể thay thế vòng lặp for,

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 và
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
9 để tạo chức năng mạnh mẽ trong một dòng mã Python

Hiểu danh sách cơ bản

Giả sử tôi muốn tạo một danh sách các số từ 1 đến 10. tôi có thể làm

numbers = []
for i in range[1, 11]:
    numbers.append[i]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

và tôi sẽ nhận được

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Nhưng sử dụng khả năng hiểu danh sách, điều này có thể được thực hiện trong một dòng

>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đây là cú pháp cơ bản của việc hiểu danh sách.

>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0. Ở đây, iterable là
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1, phần tử là
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2 và biểu thức là
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2. Điều này tương đương với vòng lặp for mà chúng ta đã sử dụng trước đó. chúng tôi thêm
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2 vào danh sách trong đó
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2 là một số từ 1 đến 11

bản đồ[]

Hàm

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 thường được sử dụng để áp dụng một hàm trên từng phần tử trong một iterable. Truyền vào một hàm và một lần lặp, và
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 sẽ tạo một đối tượng chứa kết quả của việc truyền từng phần tử vào hàm

Ví dụ: giả sử tôi muốn tạo danh sách ô vuông từ danh sách

>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 mà chúng tôi đã tạo trước đó. chúng ta có thể làm

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
4

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

và chúng ta sẽ nhận được

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
5

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Hoặc chúng ta có thể sử dụng

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 như vậy

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Ở đây, chúng tôi chuyển từng phần tử trong

>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 vào hàm lambda [đây chỉ là một cách dễ dàng để tạo hàm nếu bạn lười biếng]. Đầu ra của việc đặt từng số
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
41 vào hàm
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
42 sẽ là bình phương của số. Sử dụng
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
43, chúng tôi biến đối tượng bản đồ thành một danh sách

Thay thế bản đồ [] Bằng cách hiểu danh sách

Sử dụng hiểu danh sách, chúng ta có thể chỉ cần làm

numbers = []
for i in range[1, 11]:
    numbers.append[i]
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Điều này sẽ chuyển từng số

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
44 vào biểu thức
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
45 và tạo một danh sách mới trong đó các phần tử chỉ đơn giản là bình phương của mỗi số trong
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8

lọc[]

Hàm

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
9 được sử dụng để tạo một tập hợp con của một danh sách hiện có, dựa trên một điều kiện. Truyền vào một hàm và một lần lặp, và
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
9 sẽ tạo một đối tượng chứa tất cả các phần tử trong đó hàm đánh giá là
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
49

Ví dụ: giả sử tôi muốn lấy danh sách tất cả các số lẻ và danh sách tất cả các số chẵn từ danh sách

>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 mà chúng ta đã tạo trước đó. chúng ta có thể làm

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

và chúng tôi sẽ nhận được

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Hoặc chúng ta có thể sử dụng

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
9 như vậy

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tại đây, tất cả các số sẽ được chuyển vào hàm lambda và nếu

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
52 là
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
49 thì số đó sẽ được đưa vào
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
54. Tương tự như vậy, nếu
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
55 là
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
49, số đó sẽ được bao gồm trong
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
57

Thay thế bộ lọc [] Bằng cách hiểu danh sách

Sử dụng hiểu danh sách, chúng ta có thể chỉ cần làm

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Ở đây, chúng tôi đang sử dụng một điều kiện. Cú pháp cho điều này là

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
58. Điều này tương đương với vòng lặp for mà chúng ta đã sử dụng trước đó — nếu điều kiện
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
59 được đáp ứng,
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
44 sẽ được thêm vào
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
54 và
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
44 là một phần tử trong vòng lặp
>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8

Hiểu lồng nhau

Giả sử chúng ta muốn tạo một ma trận. Điều này sẽ liên quan đến việc tạo danh sách lồng nhau. Sử dụng vòng lặp for, chúng ta có thể làm như sau

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

và chúng tôi sẽ nhận được

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Sử dụng cách hiểu lồng nhau, chúng ta có thể chỉ cần làm

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Khả năng hiểu danh sách bên ngoài

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
74 tạo 5 hàng, trong khi khả năng hiểu danh sách bên trong
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
75 tạo 5 cột

Từ điển hiểu

Bạn cũng có thể sử dụng cách hiểu từ điển. Ví dụ: nếu tôi muốn tạo một từ điển ánh xạ từng số trong

>>> numbers = [i for i in range[1, 11]]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8 vào ô vuông tương ứng của chúng, chúng tôi có thể thực hiện

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
4

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

và chúng tôi sẽ nhận được

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
5

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Hoặc chúng ta có thể sử dụng cách hiểu từ điển

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
6

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bạn thậm chí có thể sử dụng cách hiểu từ điển trong cách hiểu danh sách hoặc ngược lại

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tại sao sử dụng hiểu danh sách?
  • Mã sạch hơn, rõ ràng hơn
  • Nhanh hơn một chút so với
    >>> numbers
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    8 và
    >>> numbers
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    9
  • Thường được coi là 'trăn' hơn

Nhưng này, vào cuối ngày, sự lựa chọn là của bạn. Khả năng hiểu danh sách chỉ là một cách khác để làm những việc tương tự và liệu thứ gì đó 'sạch hơn' và 'rõ ràng hơn' hay không phần lớn là chủ quan. Tuy nhiên, hầu hết mọi người sẽ đồng ý rằng hiểu danh sách là cách tiêu chuẩn hơn để thực hiện mọi việc

Bản đồ có hiệu quả hơn vòng lặp Python không?

Vì map[] được viết bằng C và được tối ưu hóa cao, nên vòng lặp ngụ ý bên trong của nó có thể hiệu quả hơn vòng lặp Python for thông thường. Đây là một lợi thế của việc sử dụng map[]. Ưu điểm thứ hai của việc sử dụng map[] liên quan đến mức tiêu thụ bộ nhớ. Với vòng lặp for, bạn cần lưu trữ toàn bộ danh sách trong bộ nhớ hệ thống của mình

Bản đồ có giống như vòng lặp for không?

bản đồ[viết hoa]. Cũng giống như cách mã bên trong vòng lặp for của chúng ta được gọi miễn là điều kiện đúng, mã bên trong map[] được gọi một lần cho mỗi phần tử trong mảng. Điều này thực hiện tương tự như vòng lặp for của chúng tôi, nhưng điểm khác biệt lớn là các điều kiện để lặp lại được xử lý cho chúng tôi .

Làm cách nào để tạo bản đồ bằng Python?

Hàm Python map[] . ] map[] function returns a map object[which is an iterator] of the results after applying the given function to each item of a given iterable [list, tuple etc.] Tham số. niềm vui. Đây là một chức năng mà bản đồ chuyển từng phần tử của lần lặp đã cho. lặp đi lặp lại. Nó là một iterable được ánh xạ.

Bản đồ [] trong Python là gì?

Bản đồ trong Python là một hàm hoạt động như một trình lặp để trả về kết quả sau khi áp dụng một hàm cho mọi mục của một lần lặp [tuple, danh sách, v.v. ]. Nó được sử dụng khi bạn muốn áp dụng một hàm chuyển đổi duy nhất cho tất cả các phần tử có thể lặp lại. Hàm lặp và hàm được truyền dưới dạng đối số cho bản đồ trong Python

Chủ Đề