Hướng dẫn how do you convert a loop to a map in python? - làm thế nào để bạn chuyển đổi một vòng lặp thành bản đồ trong python?

Chịu đựng tôi về điều này. Không phải là một lời giải thích nhưng điều này đã làm việc sau 2 ngày. Chỉ sử dụng bản đồ và danh sách. Đó là mã xấu. Đề xuất để rút ngắn mã được chào đón. Giải pháp Python 3

Show

Ví dụ sử dụng danh sách hiểu:

>>> a=[x+y for x in [0,1,2] for y in [100,200,300]]
>>> a
[100,200,300,101,201,301,102,202,302]

Ví dụ sử dụng cho:

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]

Bây giờ ví dụ chỉ sử dụng bản đồ:

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]

Giải pháp Python2.7 nhỏ hơn nhiều:

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]

Một biến thể khác: Tôi đã gửi email cho Mark Lutz và đây là giải pháp của anh ấy. Điều này không sử dụng đóng cửa và là gần nhất với chức năng vòng lặp.

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]

Bản đồ () có nhanh hơn so với vòng lặp không?

Sự khác biệt chủ yếu với các vòng lặp là sintaxe của bạn và các giá trị trả về của bạn. Bản đồ trả về các đối tượng bản đồ và vòng lặp không trả về không có gì. Kết luận đầu tiên: Bản đồ nhanh hơn các vòng? Trong trường hợp này có.

Syntax:

bản đồ (chức năng, có thể lặp lại). & nbsp;

Điều này có thể được xây dựng như & nbsp;

Bản đồ (Lambda X: Biểu thức, & NBSP; có thể sử dụng được)

Hàm MAP chỉ đơn giản là áp dụng chức năng được chỉ định mà Iterableand đã cho trả về kết quả được sửa đổi là kết quả.on the given iterableand returns the modified iterable as the result.

Ví dụ: Tạo một vòng lặp lồng nhauCreating a nested loop

Python3

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
0
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
1
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
2
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
3
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
4
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
5____444447____
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
8

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
9
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
1
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
2
[13, 14, 15, 23, 24, 25, 33, 34, 35]
2
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
4
[13, 14, 15, 23, 24, 25, 33, 34, 35]
4
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
4
[13, 14, 15, 23, 24, 25, 33, 34, 35]
6
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
8

[13, 14, 15, 23, 24, 25, 33, 34, 35]
8
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
1
map(function, iterable[, iterable1, iterable2,..., iterableN])
0

map(function, iterable[, iterable1, iterable2,..., iterableN])
1
map(function, iterable[, iterable1, iterable2,..., iterableN])
2
map(function, iterable[, iterable1, iterable2,..., iterableN])
3
map(function, iterable[, iterable1, iterable2,..., iterableN])
4

map(function, iterable[, iterable1, iterable2,..., iterableN])
5
map(function, iterable[, iterable1, iterable2,..., iterableN])
1
map(function, iterable[, iterable1, iterable2,..., iterableN])
7
map(function, iterable[, iterable1, iterable2,..., iterableN])
3
map(function, iterable[, iterable1, iterable2,..., iterableN])
9

>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
0
>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
1
>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
2
>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
3

>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
4
>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
5

Output:

[13, 14, 15, 23, 24, 25, 33, 34, 35]

Bây giờ, chúng ta hãy nhìn vào bản đồ tương đương với sự lồng nhau này cho vòng lặp này.

Đối với ba chức năng bản đồ này được sử dụng, hai chức năng khác. Hàm bản đồ đầu tiên là chức năng bản đồ cha tham gia kết quả của hai hàm bản đồ bên trong. Chúng ta phải chuyển toàn bộ kết quả cho chức năng list (). Nếu chúng ta chọn bỏ qua, hàm Danh sách () ngoài cùng, đầu ra sẽ là đối tượng bản đồ. Lý do là đối tượng bản đồ không thích lưu trữ toàn bộ kích thước của bộ nhớ trong bộ nhớ của nó. Vì vậy, để truy cập đầu ra, chúng tôi sẽ yêu cầu chỉ định rõ ràng định dạng đầu ra của hàm bản đồ này là một danh sách.

Ví dụ: Chuyển đổi một vòng lặp cho vòng lặp thành bản đồ tương đươngConvert a nested for loop to a map equivalent

Python3

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
0
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
1
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
2
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
3
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
4
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
5____444447____
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
8

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
9
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
1
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
2
[13, 14, 15, 23, 24, 25, 33, 34, 35]
2
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
4
[13, 14, 15, 23, 24, 25, 33, 34, 35]
4
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
4
[13, 14, 15, 23, 24, 25, 33, 34, 35]
6
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
8

[13, 14, 15, 23, 24, 25, 33, 34, 35]
8
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
1
map(function, iterable[, iterable1, iterable2,..., iterableN])
0

map(function, iterable[, iterable1, iterable2,..., iterableN])
1
map(function, iterable[, iterable1, iterable2,..., iterableN])
2
map(function, iterable[, iterable1, iterable2,..., iterableN])
3
map(function, iterable[, iterable1, iterable2,..., iterableN])
4

map(function, iterable[, iterable1, iterable2,..., iterableN])
5
map(function, iterable[, iterable1, iterable2,..., iterableN])
1
map(function, iterable[, iterable1, iterable2,..., iterableN])
7
map(function, iterable[, iterable1, iterable2,..., iterableN])
3
map(function, iterable[, iterable1, iterable2,..., iterableN])
9

>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
4
>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]
5

Output:

[13, 14, 15, 23, 24, 25, 33, 34, 35]

[13, 14, 15, 23, 24, 25, 33, 34, 35]


Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Hàm bản đồ Python (): Chuyển đổi Iterables This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python's map() Function: Transforming Iterables

Hàm bản đồ () trong Python là gì?

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 is a built-in function that allows you to process and transform all the items in an iterable without using an explicit
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 loop, a technique commonly known as mapping.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 is useful when you need to apply a transformation function to each item in an iterable and transform them into a new iterable.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 is one of the tools that support a functional programming style in Python.

Bản đồ của Python () là một hàm tích hợp cho phép bạn xử lý và chuyển đổi tất cả các mục trong một điều có thể sử dụng mà không cần sử dụng một vòng lặp rõ ràng, một kỹ thuật thường được gọi là ánh xạ. MAP () rất hữu ích khi bạn cần áp dụng chức năng chuyển đổi cho từng mục trong một mục có thể lặp lại và biến chúng thành một thứ mới có thể đi được.

  • Bản đồ có tốt hơn so với Loop Python không?
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16
    works
  • Vì MAP () được viết bằng C và được tối ưu hóa cao, vòng lặp ngụ ý bên trong của nó có thể hiệu quả hơn so với một python thông thường cho vòng lặp. Đây là một lợi thế của việc sử dụng Map (). Lợi thế thứ hai của việc sử dụng map () có liên quan đến mức tiêu thụ bộ nhớ. Với một vòng lặp For, bạn cần lưu trữ toàn bộ danh sách trong bộ nhớ của hệ thống.transform different types of Python iterables using
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16
  • Tại sao sử dụng chức năng bản đồ thay vì một vòng lặp?combine
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 with other functional tools to perform more complex transformations
  • Hàm 'Bản đồ' sẽ luôn trả về một mảng trong khi cách tiếp cận 'cho vòng lặp' mà bạn xác định giá trị trả về - nếu có. Như bạn có thể thấy, nó không nhanh hơn vì chức năng gọi lại được gọi trên mọi mục, nhưng mã sạch hơn, nhanh hơn để thực hiện và mạnh hơn.replace
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 and make your code more Pythonic

Bản đồ () có nhanh hơn so với vòng lặp không?

Để hiểu rõ hơn về

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16, một số kiến ​​thức trước đây về cách làm việc với các vòng lặp,
map(function, iterable[, iterable1, iterable2,..., iterableN])
1, các chức năng và chức năng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 sẽ hữu ích.

Mã hóa với phong cách chức năng trong Python

Trong lập trình chức năng, các tính toán được thực hiện bằng cách kết hợp các chức năng lấy các đối số và trả về một giá trị cụ thể (hoặc giá trị) do đó. Các chức năng này không thể sửa đổi các đối số đầu vào của họ và không thay đổi trạng thái chương trình. Họ chỉ cung cấp kết quả của một tính toán nhất định. Những loại chức năng này thường được gọi là chức năng thuần túy.functional programming, computations are done by combining functions that take arguments and return a concrete value (or values) as a result. These functions don’t modify their input arguments and don’t change the program’s state. They just provide the result of a given computation. These kinds of functions are commonly known as pure functions.

Về lý thuyết, các chương trình được xây dựng bằng cách sử dụng kiểu chức năng sẽ dễ dàng hơn:

  • Phát triển vì bạn có thể mã hóa và sử dụng mọi chức năng trong sự cô lập because you can code and use every function in isolation
  • Gỡ lỗi và kiểm tra vì bạn có thể kiểm tra và gỡ lỗi các chức năng riêng lẻ mà không cần nhìn vào phần còn lại của chương trình because you can test and debug individual functions without looking at the rest of the program
  • Hiểu vì bạn không cần phải đối phó với các thay đổi của nhà nước trong suốt chương trình because you don’t need to deal with state changes throughout the program

Lập trình chức năng thường sử dụng danh sách, mảng và các phép lặp khác để biểu diễn dữ liệu cùng với một tập hợp các hàm hoạt động trên dữ liệu đó và chuyển đổi nó. Khi nói đến việc xử lý dữ liệu với kiểu chức năng, có ít nhất ba kỹ thuật thường được sử dụng:

  1. Ánh xạ bao gồm việc áp dụng một chức năng chuyển đổi cho một ITable để tạo ra một điều mới có thể đi được. Các mục trong IT có thể được sản xuất bằng cách gọi hàm chuyển đổi trên mỗi mục trong bản gốc có thể điều chỉnh được. consists of applying a transformation function to an iterable to produce a new iterable. Items in the new iterable are produced by calling the transformation function on each item in the original iterable.

  2. Lọc bao gồm việc áp dụng một hàm có giá trị vị ngữ hoặc boolean cho một điều đáng tin cậy để tạo ra một điều mới có thể đi được. Các mục trong IT có thể được sản xuất bằng cách lọc bất kỳ mục nào trong bản gốc có thể làm cho hàm vị ngữ trở lại sai. consists of applying a predicate or Boolean-valued function to an iterable to generate a new iterable. Items in the new iterable are produced by filtering out any items in the original iterable that make the predicate function return false.

  3. Giảm bao gồm việc áp dụng hàm giảm cho một ITBER để tạo ra một giá trị tích lũy duy nhất. consists of applying a reduction function to an iterable to produce a single cumulative value.

Theo Guido Van Rossum, Python bị ảnh hưởng mạnh mẽ hơn bởi các ngôn ngữ lập trình bắt buộc hơn các ngôn ngữ chức năng:

Tôi chưa bao giờ coi Python bị ảnh hưởng nặng nề bởi các ngôn ngữ chức năng, bất kể mọi người nói hay nghĩ gì. Tôi đã quen thuộc hơn nhiều với các ngôn ngữ bắt buộc như C và Algol 68 và mặc dù tôi đã tạo ra các chức năng đối tượng hạng nhất, tôi đã xem Python như một ngôn ngữ lập trình chức năng. (Nguồn)

Tuy nhiên, vào năm 1993, cộng đồng Python đã yêu cầu một số tính năng lập trình chức năng. Họ đã yêu cầu:

  • Chức năng ẩn danh
  • Một hàm
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16
  • Hàm
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    29
  • Một hàm
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    30

Các tính năng chức năng này đã được thêm vào ngôn ngữ nhờ sự đóng góp của một thành viên cộng đồng. Ngày nay,

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 và
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 là các thành phần cơ bản của phong cách lập trình chức năng trong Python.

Trong hướng dẫn này, bạn sẽ bao gồm một trong những tính năng chức năng này, chức năng tích hợp

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Bạn cũng sẽ học cách sử dụng các biểu thức toàn bộ danh sách và trình tạo để có được chức năng tương tự của
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 theo cách pythonic và có thể đọc được.

Bắt đầu với Python từ >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16

Đôi khi bạn có thể phải đối mặt với các tình huống trong đó bạn cần thực hiện cùng một thao tác trên tất cả các mục của một đầu vào có thể sử dụng để xây dựng một điều khác nhau mới. Cách tiếp cận nhanh nhất và phổ biến nhất cho vấn đề này là sử dụng vòng lặp Python

map(function, iterable[, iterable1, iterable2,..., iterableN])
1. Tuy nhiên, bạn cũng có thể giải quyết vấn đề này mà không cần một vòng lặp rõ ràng bằng cách sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16.

Trong ba phần sau, bạn sẽ tìm hiểu cách

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 hoạt động và cách bạn có thể sử dụng nó để xử lý và biến đổi vòng lặp mà không cần vòng lặp.

Hiểu >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 Loops qua các mục của một IT có thể lặp lại (hoặc Iterables) và trả về một trình lặp có kết quả từ việc áp dụng chức năng chuyển đổi cho mọi mục trong ITEBELBLE INPUT INPUT.

Theo tài liệu,

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 lấy một đối tượng chức năng và có thể lặp lại (hoặc nhiều lần lặp) làm đối số và trả về một trình lặp lại mang lại các mục đã chuyển đổi theo yêu cầu. Chữ ký của chức năng được định nghĩa như sau:

map(function, iterable[, iterable1, iterable2,..., iterableN])

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 cho mỗi mục trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 trong một vòng lặp và trả về một trình lặp mới mang lại các mục đã chuyển đổi theo yêu cầu.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 có thể là bất kỳ chức năng Python nào có một số đối số bằng với số lần lặp bạn chuyển sang
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16.

Đối số đầu tiên này cho

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 là một hàm chuyển đổi. Nói cách khác, nó có chức năng chuyển đổi từng mục gốc thành một mục mới (được chuyển đổi). Mặc dù tài liệu Python gọi đối số này
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44, nhưng nó có thể là bất kỳ Python nào có thể gọi được. Điều này bao gồm các chức năng tích hợp, các lớp, phương thức, chức năng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 và các chức năng do người dùng xác định.transformation function. In other words, it’s the function that transforms each original item into a new (transformed) item. Even though the Python documentation calls this argument
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44, it can be any Python callable. This includes built-in functions, classes, methods,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 functions, and user-defined functions.

Hoạt động mà

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 thực hiện thường được gọi là ánh xạ vì nó ánh xạ mọi mục trong một đầu vào có thể lặp lại cho một mục mới trong một kết quả có thể xảy ra. Để làm điều đó,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng chức năng chuyển đổi cho tất cả các mục trong đầu vào có thể điều chỉnh được.mapping because it maps every item in an input iterable to a new item in a resulting iterable. To do that,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 applies a transformation function to all the items in the input iterable.

Để hiểu rõ hơn

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16, giả sử bạn cần lấy một danh sách các giá trị số và chuyển đổi nó thành một danh sách chứa giá trị vuông của mỗi số trong danh sách ban đầu. Trong trường hợp này, bạn có thể sử dụng vòng lặp
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 và mã hóa một cái gì đó như sau:

>>>

>>> numbers = [1, 2, 3, 4, 5]
>>> squared = []

>>> for num in numbers:
...     squared.append(num ** 2)
...

>>> squared
[1, 4, 9, 16, 25]

Khi bạn chạy vòng lặp này trên

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55, bạn sẽ nhận được một danh sách các giá trị vuông. Vòng lặp
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 lặp lại trên
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55 và áp dụng một hoạt động công suất trên mỗi giá trị. Cuối cùng, nó lưu trữ các giá trị kết quả trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
58.

Bạn có thể đạt được kết quả tương tự mà không cần sử dụng một vòng lặp rõ ràng bằng cách sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Hãy xem việc tái tạo sau đây của ví dụ trên:

>>>

>>> def square(number):
...     return number ** 2
...

>>> numbers = [1, 2, 3, 4, 5]

>>> squared = map(square, numbers)

>>> list(squared)
[1, 4, 9, 16, 25]

Khi bạn chạy vòng lặp này trên

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55, bạn sẽ nhận được một danh sách các giá trị vuông. Vòng lặp
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 lặp lại trên
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55 và áp dụng một hoạt động công suất trên mỗi giá trị. Cuối cùng, nó lưu trữ các giá trị kết quả trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
58.

Bạn có thể đạt được kết quả tương tự mà không cần sử dụng một vòng lặp rõ ràng bằng cách sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Hãy xem việc tái tạo sau đây của ví dụ trên:

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
60 là một hàm chuyển đổi ánh xạ một số vào giá trị vuông của nó. Cuộc gọi đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
60 cho tất cả các giá trị trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55 và trả về một trình lặp lại mang lại các giá trị vuông. Sau đó, bạn gọi
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
64 trên
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để tạo một đối tượng danh sách chứa các giá trị vuông.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 được viết bằng C và được tối ưu hóa cao, vòng lặp ngụ ý bên trong của nó có thể hiệu quả hơn so với vòng lặp Python
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 thông thường. Đây là một lợi thế của việc sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16.

>>>

>>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]

>>> int_nums = map(int, str_nums)
>>> int_nums
<map object at 0x7fb2c7e34c70>

>>> list(int_nums)
[4, 8, 6, 5, 3, 2, 8, 9, 2, 5]

>>> str_nums
["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]

Khi bạn chạy vòng lặp này trên

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55, bạn sẽ nhận được một danh sách các giá trị vuông. Vòng lặp
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 lặp lại trên
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55 và áp dụng một hoạt động công suất trên mỗi giá trị. Cuối cùng, nó lưu trữ các giá trị kết quả trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
58.

Bạn có thể đạt được kết quả tương tự mà không cần sử dụng một vòng lặp rõ ràng bằng cách sử dụng >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16. Hãy xem việc tái tạo sau đây của ví dụ trên:

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
60 là một hàm chuyển đổi ánh xạ một số vào giá trị vuông của nó. Cuộc gọi đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
60 cho tất cả các giá trị trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55 và trả về một trình lặp lại mang lại các giá trị vuông. Sau đó, bạn gọi
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
64 trên
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để tạo một đối tượng danh sách chứa các giá trị vuông.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 được viết bằng C và được tối ưu hóa cao, vòng lặp ngụ ý bên trong của nó có thể hiệu quả hơn so với vòng lặp Python
map(function, iterable[, iterable1, iterable2,..., iterableN])
1 thông thường. Đây là một lợi thế của việc sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16.

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
0

Lợi thế thứ hai của việc sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 có liên quan đến mức tiêu thụ bộ nhớ. Với vòng lặp
map(function, iterable[, iterable1, iterable2,..., iterableN])
1, bạn cần lưu trữ toàn bộ danh sách trong bộ nhớ hệ thống của bạn. Với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16, bạn nhận được các mục theo yêu cầu và chỉ có một mục nằm trong bộ nhớ hệ thống của bạn tại một thời điểm nhất định.

Ví dụ khác, giả sử bạn cần chuyển đổi tất cả các mục trong danh sách từ chuỗi sang số nguyên. Để làm điều đó, bạn có thể sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cùng với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
73 như sau:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
1

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
73 cho mọi giá trị trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
76. Vì
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 trả về một trình lặp (một đối tượng bản đồ), bạn sẽ cần gọi
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
64 để bạn có thể làm cạn kiệt trình lặp và biến nó thành một đối tượng danh sách. Lưu ý rằng chuỗi ban đầu không được sửa đổi trong quá trình.

Sử dụng >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16 với các loại chức năng khác nhau

Bạn có thể sử dụng bất kỳ loại python nào có thể gọi được với

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Điều kiện duy nhất là người có thể gọi có một đối số và trả về một giá trị cụ thể và hữu ích. Ví dụ: bạn có thể sử dụng các lớp, các trường hợp thực hiện một phương thức đặc biệt được gọi là
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
81, phương thức thể hiện, phương thức lớp, phương thức tĩnh và chức năng.

Có một số chức năng tích hợp mà bạn có thể sử dụng với

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Xem xét các ví dụ sau:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
2

Bạn có thể sử dụng bất kỳ chức năng tích hợp nào với

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16, miễn là hàm có đối số và trả về giá trị.

Một mẫu phổ biến mà bạn sẽ thấy khi sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 là sử dụng hàm
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 làm đối số đầu tiên.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 Các chức năng rất tiện dụng khi bạn cần chuyển chức năng dựa trên biểu thức cho
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Ví dụ: bạn có thể thực hiện lại ví dụ về các giá trị vuông bằng hàm
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 như sau:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
3

Các hàm

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 khá hữu ích khi sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Họ có thể đóng vai trò của đối số đầu tiên với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Bạn có thể sử dụng các chức năng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
01 cùng với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để nhanh chóng xử lý và chuyển đổi vòng lặp của bạn.

Xử lý nhiều lần lặp đầu vào với >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16

Nếu bạn cung cấp nhiều lần lặp cho

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16, thì chức năng chuyển đổi phải lấy nhiều đối số như lặp đi lặp lại. Việc lặp lại dừng lại ở cuối của số ít nhất có thể.

Sử dụng các phương pháp của >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 19

Một cách tiếp cận khá phổ biến để thao tác chuỗi là sử dụng một số phương thức của lớp

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
19 để chuyển đổi một chuỗi nhất định thành một chuỗi mới. Nếu bạn xử lý các chuỗi lặp và cần áp dụng cùng một phép biến đổi cho mỗi chuỗi, thì bạn có thể sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cùng với các phương thức chuỗi khác nhau:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
4

Có một vài phép biến đổi mà bạn có thể thực hiện trên mọi mục trong

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
22 bằng các phương thức
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 và chuỗi. Hầu hết thời gian, bạn sử dụng các phương pháp không có các đối số bổ sung, như
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
24,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
25,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
26,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
27 và
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
28.

Bạn cũng có thể sử dụng một số phương thức lấy các đối số bổ sung với các giá trị mặc định, chẳng hạn như

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
29, có một đối số tùy chọn được gọi là
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
30 mặc định để loại bỏ khoảng trắng:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
5

Có một vài phép biến đổi mà bạn có thể thực hiện trên mọi mục trong

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
22 bằng các phương thức
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 và chuỗi. Hầu hết thời gian, bạn sử dụng các phương pháp không có các đối số bổ sung, như
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
24,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
25,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
26,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
27 và
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
28.

Bạn cũng có thể sử dụng một số phương thức lấy các đối số bổ sung với các giá trị mặc định, chẳng hạn như

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
29, có một đối số tùy chọn được gọi là
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
30 mặc định để loại bỏ khoảng trắng:

Khi bạn sử dụng >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 29 như thế này, bạn dựa vào giá trị mặc định là >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 30. Trong trường hợp này, bạn sử dụng >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16 để loại bỏ tất cả khoảng trắng trong các mục của >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 34.

Kỹ thuật này có thể tiện dụng khi, ví dụ, bạn đang xử lý các tệp văn bản trong đó các dòng có thể có không gian dấu vết (hoặc các ký tự khác) và bạn cần xóa chúng. Nếu đây là trường hợp, thì bạn cần xem xét rằng sử dụng

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
29 mà không cần tùy chỉnh
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
30 cũng sẽ xóa ký tự mới.

Loại bỏ dấu câu

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
6

Có một vài phép biến đổi mà bạn có thể thực hiện trên mọi mục trong

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
22 bằng các phương thức
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 và chuỗi. Hầu hết thời gian, bạn sử dụng các phương pháp không có các đối số bổ sung, như
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
24,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
25,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
26,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
27 và
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
28.

Bạn cũng có thể sử dụng một số phương thức lấy các đối số bổ sung với các giá trị mặc định, chẳng hạn như

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
29, có một đối số tùy chọn được gọi là
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
30 mặc định để loại bỏ khoảng trắng:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
7

Có một vài phép biến đổi mà bạn có thể thực hiện trên mọi mục trong

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
22 bằng các phương thức
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 và chuỗi. Hầu hết thời gian, bạn sử dụng các phương pháp không có các đối số bổ sung, như
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
24,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
25,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
26,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
27 và
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
28.

Bạn cũng có thể sử dụng một số phương thức lấy các đối số bổ sung với các giá trị mặc định, chẳng hạn như

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
29, có một đối số tùy chọn được gọi là
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
30 mặc định để loại bỏ khoảng trắng:

Khi bạn sử dụng >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 29 như thế này, bạn dựa vào giá trị mặc định là >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 30. Trong trường hợp này, bạn sử dụng >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16 để loại bỏ tất cả khoảng trắng trong các mục của >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 34.

Kỹ thuật này có thể tiện dụng khi, ví dụ, bạn đang xử lý các tệp văn bản trong đó các dòng có thể có không gian dấu vết (hoặc các ký tự khác) và bạn cần xóa chúng. Nếu đây là trường hợp, thì bạn cần xem xét rằng sử dụng

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
29 mà không cần tùy chỉnh
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
30 cũng sẽ xóa ký tự mới.

Loại bỏ dấu câu

  • Khi nói đến việc xử lý văn bản, đôi khi bạn cần xóa các dấu chấm câu còn lại sau khi bạn chia văn bản thành từ. Để giải quyết vấn đề này, bạn có thể tạo một chức năng tùy chỉnh để loại bỏ các dấu chấm câu từ một từ bằng cách sử dụng một biểu thức thông thường phù hợp với các dấu chấm câu phổ biến nhất.
    >>>n=[]
    >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>n
    [100,200,300,101,201,301,102,202,302]
    
    57
  • Ở đây, một triển khai có thể của chức năng này bằng cách sử dụng
    >>>n=[]
    >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>n
    [100,200,300,101,201,301,102,202,302]
    
    37, đây là một hàm biểu thức thông thường sống trong mô -đun
    >>>n=[]
    >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>n
    [100,200,300,101,201,301,102,202,302]
    
    38 trong thư viện tiêu chuẩn Python tựa:
    >>>n=[]
    >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>n
    [100,200,300,101,201,301,102,202,302]
    
    58

Bên trong

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
39, bạn sử dụng mẫu biểu thức thông thường phù hợp với các dấu chấm câu phổ biến nhất mà bạn sẽ tìm thấy trong bất kỳ văn bản nào được viết bằng tiếng Anh. Cuộc gọi đến
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
40 thay thế các dấu chấm câu được khớp bằng một chuỗi trống (
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
41) và trả về
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
42 được làm sạch.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
8

Với chức năng chuyển đổi của bạn, bạn có thể sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để chạy chuyển đổi trên mỗi từ trong văn bản của bạn. Ở đây, cách thức hoạt động của nó:

Trong đoạn văn bản này, một số từ bao gồm dấu chấm câu. Ví dụ: bạn có

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
44 thay vì
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
45,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
46 thay vì
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
47, v.v. Cuộc gọi đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
39 cho mỗi từ và xóa bất kỳ dấu chấm câu nào. Vì vậy, trong
>>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]

>>> int_nums = map(int, str_nums)
>>> int_nums
<map object at 0x7fb2c7e34c70>

>>> list(int_nums)
[4, 8, 6, 5, 3, 2, 8, 9, 2, 5]

>>> str_nums
["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]
7 thứ hai, bạn đã làm sạch các từ.Unicode code point of the input character. For example,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
64 returns
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
65, and
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
66 returns
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
67:

>>>

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
9

Lưu ý rằng dấu nháy đơn (

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
51) không phải là biểu thức thông thường của bạn vì bạn muốn giữ các cơn co thắt như
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
52 như hiện tại.

Thực hiện thuật toán Mật mã Caesar

Nếu vị trí mới của bức thư không vượt ra ngoài vị trí của chữ cái cuối cùng (

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
78), thì bạn sẽ trả lại bức thư ở vị trí mới này. Để làm điều đó, bạn sử dụng chức năng tích hợp
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79.

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79 là nghịch đảo của
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
62. Nó lấy một số nguyên đại diện cho điểm mã Unicode của ký tự Unicode và trả về ký tự ở vị trí đó. Ví dụ:
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
82 sẽ trả về
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
83 và
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
84 sẽ trả về
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
85:

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
0

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79 lấy một số nguyên đại diện cho điểm mã Unicode của một ký tự và trả về ký tự tương ứng.

Cuối cùng, nếu vị trí xoay mới nằm ngoài vị trí của chữ cái cuối cùng (

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
78), thì bạn cần quay trở lại đầu bảng chữ cái. Để làm điều đó, bạn cần trừ độ dài của bảng chữ cái khỏi vị trí xoay (
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
88) và sau đó trả lại chữ cái ở vị trí mới đó bằng cách sử dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79.

Với

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
59 làm chức năng chuyển đổi của bạn, bạn có thể sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để mã hóa bất kỳ văn bản nào bằng thuật toán mã hóa Caesar. Ở đây, một ví dụ sử dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
92 để kết hợp chuỗi:

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
1

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
0

>>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 79 lấy một số nguyên đại diện cho điểm mã Unicode của một ký tự và trả về ký tự tương ứng.

Cuối cùng, nếu vị trí xoay mới nằm ngoài vị trí của chữ cái cuối cùng (

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
78), thì bạn cần quay trở lại đầu bảng chữ cái. Để làm điều đó, bạn cần trừ độ dài của bảng chữ cái khỏi vị trí xoay (
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
88) và sau đó trả lại chữ cái ở vị trí mới đó bằng cách sử dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79.numeric values. You can perform a wide variety of math and arithmetic operations, convert string values to floating-point numbers or integer numbers, and so on.

Với

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
59 làm chức năng chuyển đổi của bạn, bạn có thể sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để mã hóa bất kỳ văn bản nào bằng thuật toán mã hóa Caesar. Ở đây, một ví dụ sử dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
92 để kết hợp chuỗi:

Chuỗi cũng được lặp lại trong Python. Vì vậy, cuộc gọi đến >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16 áp dụng >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 59 cho mọi ký tự trong chuỗi đầu vào gốc. Trong trường hợp này, >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 95 trở thành >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 96, >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 97 trở thành >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 75, v.v. Cuối cùng, cuộc gọi đến >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 92 kết hợp mọi ký tự được xoay trong một tin nhắn được mã hóa cuối cùng.

Biến đổi các số lượng của các số với Python từ

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
2

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
0

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79 lấy một số nguyên đại diện cho điểm mã Unicode của một ký tự và trả về ký tự tương ứng.

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
3

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
0

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
79 lấy một số nguyên đại diện cho điểm mã Unicode của một ký tự và trả về ký tự tương ứng.

Cuối cùng, nếu vị trí xoay mới nằm ngoài vị trí của chữ cái cuối cùng (>>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 78), thì bạn cần quay trở lại đầu bảng chữ cái. Để làm điều đó, bạn cần trừ độ dài của bảng chữ cái khỏi vị trí xoay (>>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 88) và sau đó trả lại chữ cái ở vị trí mới đó bằng cách sử dụng >>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 79.

Với

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
59 làm chức năng chuyển đổi của bạn, bạn có thể sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để mã hóa bất kỳ văn bản nào bằng thuật toán mã hóa Caesar. Ở đây, một ví dụ sử dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
92 để kết hợp chuỗi:units of measure. Suppose you have a list of temperatures measured in degrees Celsius or Fahrenheit and you need to convert them into the corresponding temperatures in degrees Fahrenheit or Celsius.

Chuỗi cũng được lặp lại trong Python. Vì vậy, cuộc gọi đến

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 áp dụng
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
59 cho mọi ký tự trong chuỗi đầu vào gốc. Trong trường hợp này,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
95 trở thành
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
96,
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
97 trở thành
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
75, v.v. Cuối cùng, cuộc gọi đến
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
92 kết hợp mọi ký tự được xoay trong một tin nhắn được mã hóa cuối cùng.

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
4

Biến đổi các số lượng của các số với Python từ

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cũng có tiềm năng lớn khi xử lý và chuyển đổi các vòng lặp của các giá trị số. Bạn có thể thực hiện nhiều hoạt động toán học và số học khác nhau, chuyển đổi các giá trị chuỗi thành số điểm nổi hoặc số nguyên, v.v.

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
5

Trong các phần sau, bạn sẽ bao gồm một số ví dụ về cách sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để xử lý và chuyển đổi các số lần lặp.

Sử dụng các hoạt động toán học

Một ví dụ phổ biến về việc sử dụng các hoạt động toán học để biến đổi một giá trị số có thể sử dụng toán tử nguồn (>>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 03). Trong ví dụ sau, bạn mã hóa chức năng chuyển đổi lấy một số và trả về số bình phương và khối:

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
04 mất một số
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
00 và trả lại hình vuông và khối lập phương. Vì Python xử lý nhiều giá trị trả về làm bộ dữ liệu, mỗi gọi đến
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
04 trả về một tuple với hai giá trị. Khi bạn gọi
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 với
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
04 làm đối số, bạn sẽ nhận được một danh sách các bộ dữ liệu chứa hình vuông và khối lập phương của mỗi số trong đầu vào có thể điều chỉnh được.

Nếu bạn chắc chắn rằng dữ liệu của bạn sạch sẽ và không chứa các giá trị sai, thì bạn có thể sử dụng trực tiếp

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
29 hoặc
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
73 theo nhu cầu của bạn. Dưới đây là một số ví dụ:

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
6

Trong ví dụ đầu tiên, bạn sử dụng

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
29 với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để chuyển đổi tất cả các giá trị từ các giá trị chuỗi sang các giá trị dấu phẩy động. Trong trường hợp thứ hai, bạn sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
73 để chuyển đổi từ chuỗi sang số nguyên. Lưu ý rằng nếu một trong các giá trị không phải là một số hợp lệ, thì bạn sẽ nhận được
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
34.

Nếu bạn không chắc chắn rằng dữ liệu của bạn sạch sẽ, thì bạn có thể sử dụng chức năng chuyển đổi phức tạp hơn như sau:

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
7

Trong ví dụ đầu tiên, bạn sử dụng

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
29 với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để chuyển đổi tất cả các giá trị từ các giá trị chuỗi sang các giá trị dấu phẩy động. Trong trường hợp thứ hai, bạn sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
73 để chuyển đổi từ chuỗi sang số nguyên. Lưu ý rằng nếu một trong các giá trị không phải là một số hợp lệ, thì bạn sẽ nhận được
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
34.

Nếu bạn không chắc chắn rằng dữ liệu của bạn sạch sẽ, thì bạn có thể sử dụng chức năng chuyển đổi phức tạp hơn như sau:

Bên trong >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 35, bạn sử dụng câu lệnh >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 36 bắt được >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 34 nếu >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 29 không thành công khi chuyển đổi >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 39. Nếu không xảy ra lỗi, thì chức năng của bạn trả về >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 39 được chuyển đổi thành số điểm nổi hợp lệ. Mặt khác, bạn nhận được giá trị >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 41 (không phải số), đây là giá trị >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 42 đặc biệt mà bạn có thể sử dụng để biểu thị các giá trị có số hợp lệ, giống như >>>m=[] >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2]))) >>>m [100,200,300,101,201,301,102,202,302] 43 trong ví dụ trên.

Bạn có thể tùy chỉnh

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
35 theo nhu cầu của bạn. Ví dụ: bạn có thể thay thế câu lệnh
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
45 bằng câu lệnh
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
46, v.v.

Kết hợp >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16 với các công cụ chức năng khác

Cho đến nay, bạn đã đề cập đến cách sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để hoàn thành các nhiệm vụ khác nhau liên quan đến Iterables. Tuy nhiên, nếu bạn sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cùng với các công cụ chức năng khác như
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 và
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30, thì bạn có thể thực hiện các phép biến đổi phức tạp hơn trên Iterables. Đó là những gì bạn sẽ bao gồm trong hai phần sau.

  1. >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 và
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    29
    will be a predicate or Boolean-valued function, a function that returns
    >>>m=[]
    >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>m
    [100,200,300,101,201,301,102,202,302]
    
    57 or
    >>>m=[]
    >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>m
    [100,200,300,101,201,301,102,202,302]
    
    58 according to the input data.
  2. Đôi khi bạn cần xử lý một đầu vào có thể lặp lại và trả về một số khác có thể xuất hiện từ việc lọc ra các giá trị không mong muốn trong đầu vào có thể điều chỉnh được. Trong trường hợp đó, Python sườn
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    29 có thể là một lựa chọn tốt cho bạn.
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    29 là một chức năng tích hợp có hai đối số vị trí:
    will be any Python iterable.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 sẽ là hàm định vị hoặc giá trị boolean, một hàm trả về
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
57 hoặc
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
58 theo dữ liệu đầu vào.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 sẽ là bất kỳ python có thể.

>>>

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
8

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 mang lại các mục của đầu vào
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 mà
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 trả về
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
57. Nếu bạn chuyển
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
64 đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44, thì
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 sử dụng hàm nhận dạng. Điều này có nghĩa là
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 sẽ kiểm tra giá trị sự thật của từng mục trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 và lọc ra tất cả các mục là giả.

>>>

Để minh họa cách bạn có thể sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cùng với
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29, giả sử bạn cần tính toán căn bậc hai của tất cả các giá trị trong một danh sách. Vì danh sách của bạn có thể chứa các giá trị âm, bạn sẽ gặp lỗi vì căn bậc hai không được xác định cho các số âm:

Với một số âm làm đối số,

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
71 tăng
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
34. Để tránh vấn đề này, bạn có thể sử dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 để lọc tất cả các giá trị âm và sau đó tìm căn bậc hai của các giá trị dương còn lại. Kiểm tra ví dụ sau:

>>>n=[] >>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2]))) >>>n [100,200,300,101,201,301,102,202,302] 9

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
74 là hàm vị ngữ lấy số làm đối số và trả về
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
57 nếu số lớn hơn hoặc bằng không. Bạn có thể chuyển
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
74 đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 để xóa tất cả các số âm từ
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
55. Vì vậy, cuộc gọi đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 sẽ chỉ xử lý các số dương và
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
71 won đã cung cấp cho bạn một
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
34.reduction or folding.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 takes two required arguments:

  1. >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 và
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    30
    can be any Python callable that accepts two arguments and returns a value.
  2. Python sườn
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    30 là một chức năng sống trong một mô -đun gọi là
    >>>m=[]
    >>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
    >>>m
    [100,200,300,101,201,301,102,202,302]
    
    85 trong thư viện tiêu chuẩn Python.
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    30 là một công cụ chức năng cốt lõi khác trong Python rất hữu ích khi bạn cần áp dụng một chức năng cho một điều đáng tin cậy và giảm nó xuống một giá trị tích lũy duy nhất. Loại hoạt động này thường được gọi là giảm hoặc gấp.
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    30 có hai đối số bắt buộc:
    can be any Python iterable.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 có thể là bất kỳ Python nào có thể gọi được chấp nhận hai đối số và trả về một giá trị.

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 có thể là bất kỳ python có thể.

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
0

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 sẽ áp dụng
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 cho tất cả các mục trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 và tính toán tích lũy một giá trị cuối cùng.

Dưới đây, một ví dụ kết hợp

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 và
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 để tính tổng kích thước của tất cả các tệp sống trong thư mục nhà của bạn tích lũy:

Trong ví dụ này, bạn gọi

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
95 để có được đường dẫn đến thư mục nhà của bạn. Sau đó, bạn gọi
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
96 trên đường dẫn đó để có được một danh sách với đường dẫn của tất cả các tệp sống ở đó.

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
1

Ví dụ này dễ đọc và hiệu quả hơn rất nhiều so với ví dụ mà bạn đã thấy trước đây. Nếu bạn muốn đi sâu hơn về cách sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 và những công cụ thay thế nào bạn có thể sử dụng để thay thế
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 theo cách Pythonic, thì hãy xem Python tựa giảm (): Từ chức năng đến phong cách Pythonic.

Xử lý các phép lặp dựa trên tuple với >>> X = [0, 1, 2] >>> Y = [100, 200, 300] >>> n = [] >>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X)) >>> n [100,200,300,101,201,301,102,202,302] 05

Python sườn

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
06 tạo ra một trình lặp lại áp dụng một hàm cho các đối số thu được từ một bộ dữ liệu có thể lặp lại và mang lại kết quả. Nó rất hữu ích khi bạn xử lý các vòng lặp đã được nhóm lại trong các bộ dữ liệu.
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
06
makes an iterator that applies a function to the arguments obtained from an iterable of tuples and yields the results. It’s useful when you’re processing iterables that are already grouped in tuples.

Sự khác biệt chính giữa

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 và
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
05 là phần sau gọi chức năng chuyển đổi của nó bằng toán tử giải nén (
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
09) để giải nén từng đối số thành một số đối số vị trí. Vì vậy, hàm biến đổi được gọi là
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
10 thay vì
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
11.

Tài liệu chính thức cho

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
05 nói rằng hàm gần tương đương với hàm Python sau:

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
2

Vòng lặp

map(function, iterable[, iterable1, iterable2,..., iterableN])
1 trong chức năng này lặp lại các mục trong
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
45 và kết quả là mang lại các mục được chuyển đổi. Cuộc gọi đến
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
10 sử dụng toán tử giải nén để giải nén các bộ dữ liệu thành một số đối số vị trí. Dưới đây là một số ví dụ về cách
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
05 hoạt động:

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
3

Trong ví dụ đầu tiên, bạn sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
98 để tính công suất của giá trị thứ nhất được nâng lên giá trị thứ hai trong mỗi bộ. Các bộ dữ liệu sẽ ở dạng
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
18.

Nếu mỗi tuple trong Iterable của bạn có hai mục, thì

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 cũng phải có hai đối số. Nếu các bộ dữ liệu có ba mục, thì
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
44 phải lấy ba đối số, v.v. Nếu không, bạn sẽ nhận được một
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
21.

Nếu bạn sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 thay vì
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
05, thì bạn sẽ nhận được một kết quả khác vì
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 lấy một mục từ mỗi tuple:

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
4

Lưu ý rằng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 lấy hai bộ dữ liệu thay vì một danh sách các bộ dữ liệu.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cũng lấy một giá trị từ mỗi tuple trong mỗi lần lặp. Để làm cho
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 trả về kết quả tương tự như
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
05, bạn cần phải trao đổi các giá trị:

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
5

Trong trường hợp này, bạn có hai bộ dữ liệu thay vì một danh sách các bộ dữ liệu. Bạn cũng đã hoán đổi

>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
29 và
[13, 14, 15, 23, 24, 25, 33, 34, 35]
4. Bây giờ bộ tuple đầu tiên cung cấp các cơ sở và bộ thứ hai cung cấp số mũ.

Mã hóa với phong cách Pythonic: Thay thế >>>a=[] >>>for x in [0,1,2]: ... for y in [100,200,300]: ... a.append(x+y) ... >>>a [100,200,300,101,201,301,102,202,302] 16

Các công cụ lập trình chức năng như

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 và
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 đã tồn tại trong một thời gian dài. Tuy nhiên, liệt kê các toàn bộ và biểu thức máy phát đã trở thành sự thay thế tự nhiên cho chúng gần như trong mọi trường hợp sử dụng.

Ví dụ, chức năng được cung cấp bởi

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 hầu như luôn được thể hiện tốt hơn bằng cách sử dụng danh sách hiểu hoặc biểu thức máy phát. Trong hai phần sau, bạn sẽ học cách thay thế một cuộc gọi đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 bằng cách hiểu danh sách hoặc biểu thức trình tạo để làm cho mã của bạn dễ đọc và pythonic hơn.

Sử dụng danh sách toàn diện

Có một mẫu chung mà bạn có thể sử dụng để thay thế cuộc gọi đến

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 bằng cách hiểu danh sách. Đây là cách: làm thế nào:

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
6

Lưu ý rằng danh sách hiểu hầu như luôn luôn đọc rõ hơn so với cuộc gọi đến

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Vì các toàn bộ danh sách khá phổ biến đối với các nhà phát triển Python, nên nó phổ biến để tìm thấy chúng ở khắp mọi nơi. Vì vậy, việc thay thế một cuộc gọi đến
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 bằng cách hiểu danh sách sẽ làm cho mã của bạn trông quen thuộc hơn với các nhà phát triển Python khác.

Dưới đây, một ví dụ về cách thay thế

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 bằng cách hiểu danh sách để xây dựng danh sách các số vuông:

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
7

Nếu bạn so sánh cả hai giải pháp, thì bạn có thể nói rằng giải pháp sử dụng khả năng hiểu danh sách là dễ đọc hơn vì nó đọc gần giống như tiếng Anh đơn giản. Ngoài ra, danh sách toàn diện Tránh nhu cầu gọi rõ ràng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
64 trên
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 để xây dựng danh sách cuối cùng.

Sử dụng biểu thức máy phát

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 Trả về một đối tượng bản đồ, là một trình lặp lại mang lại các mục theo yêu cầu. Vì vậy, sự thay thế tự nhiên cho
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 là một biểu thức máy phát vì các biểu thức máy phát biểu diễn trả về các đối tượng tạo, cũng là trình lặp lại mang lại các mục theo yêu cầu.map object, which is an iterator that yields items on demand. So, the natural replacement for
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 is a generator expression because generator expressions return generator objects, which are also iterators that yield items on demand.

Trình lặp Python được biết là khá hiệu quả về mức tiêu thụ bộ nhớ. Đây là lý do tại sao

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 bây giờ trả về một trình lặp thay vì
>>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]

>>> int_nums = map(int, str_nums)
>>> int_nums
<map object at 0x7fb2c7e34c70>

>>> list(int_nums)
[4, 8, 6, 5, 3, 2, 8, 9, 2, 5]

>>> str_nums
["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]
7.

Có một sự khác biệt cú pháp nhỏ giữa khả năng hiểu danh sách và biểu thức máy phát. Đầu tiên sử dụng một cặp dấu ngoặc vuông (

map(function, iterable[, iterable1, iterable2,..., iterableN])
0) để phân định biểu thức. Cái thứ hai sử dụng một cặp dấu ngoặc đơn (
>>> X = [0, 1, 2]               
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
48). Vì vậy, để biến một danh sách hiểu thành biểu thức máy phát, bạn chỉ cần thay thế các dấu ngoặc vuông bằng dấu ngoặc đơn.

Bạn có thể sử dụng các biểu thức tạo để ghi mã đọc rõ hơn mã sử dụng

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16. Kiểm tra ví dụ sau:

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
8

Mã này có sự khác biệt chính so với mã trong phần trước: bạn thay đổi dấu ngoặc vuông thành một cặp dấu ngoặc đơn để biến danh sách hiểu thành biểu thức trình tạo.

Biểu thức của máy phát thường được sử dụng làm đối số trong các cuộc gọi chức năng. Trong trường hợp này, bạn không cần sử dụng dấu ngoặc đơn để tạo biểu thức máy phát vì dấu ngoặc đơn mà bạn sử dụng để gọi chức năng cũng cung cấp cú pháp để xây dựng trình tạo. Với ý tưởng này, bạn có thể nhận được kết quả tương tự như ví dụ trên bằng cách gọi

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
64 như thế này:

>>>

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
9

Mã này có sự khác biệt chính so với mã trong phần trước: bạn thay đổi dấu ngoặc vuông thành một cặp dấu ngoặc đơn để biến danh sách hiểu thành biểu thức trình tạo.

Biểu thức của máy phát thường được sử dụng làm đối số trong các cuộc gọi chức năng. Trong trường hợp này, bạn không cần sử dụng dấu ngoặc đơn để tạo biểu thức máy phát vì dấu ngoặc đơn mà bạn sử dụng để gọi chức năng cũng cung cấp cú pháp để xây dựng trình tạo. Với ý tưởng này, bạn có thể nhận được kết quả tương tự như ví dụ trên bằng cách gọi

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
64 như thế này:

Nếu bạn sử dụng biểu thức trình tạo như một đối số trong một cuộc gọi chức năng, thì bạn không cần thêm một cặp dấu ngoặc đơn. Các dấu ngoặc đơn mà bạn sử dụng để gọi hàm cung cấp cú pháp để xây dựng trình tạo.

Biểu thức của máy phát điện hiệu quả như

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 về mức tiêu thụ bộ nhớ vì cả hai đều trả về các trình lặp lại mang lại các mục theo yêu cầu. Tuy nhiên, các biểu thức tạo hầu như sẽ luôn luôn cải thiện khả năng đọc mã của bạn. Họ cũng làm cho mã của bạn trở nên pythonic hơn trong mắt các nhà phát triển Python khác.
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16
allows you to perform mapping operations on iterables. A mapping operation consists of applying a transformation function to the items in an iterable to generate a transformed iterable. In general,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 will allow you to process and transform iterables without using an explicit loop.

Sự kết luận

Python sườn

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 cho phép bạn thực hiện các hoạt động ánh xạ trên Iterables. Một hoạt động ánh xạ bao gồm áp dụng chức năng chuyển đổi cho các mục trong một điều khác để tạo ra một sự thay đổi được chuyển đổi. Nói chung,
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 sẽ cho phép bạn xử lý và chuyển đổi Iterables mà không cần sử dụng một vòng lặp rõ ràng.

  • Trong hướng dẫn này, bạn đã học cách
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 hoạt động và cách sử dụng nó để xử lý các phép lặp. Bạn cũng đã tìm hiểu về một số công cụ pythonic mà bạn có thể sử dụng để thay thế
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 trong mã của mình.
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16
  • Bây giờ bạn biết cách:process and transform iterables without using an explicit loop
  • Làm việc với Python từ
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    29
    and
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    30
    to perform complex transformations
  • Sử dụng
    >>>a=[]
    >>>for x in [0,1,2]:
    ...    for y in [100,200,300]:
    ...        a.append(x+y)
    ...
    >>>a
    [100,200,300,101,201,301,102,202,302]
    
    16 để xử lý và biến đổi Iterables mà không cần sử dụng vòng lặp rõ rànglist comprehensions and generator expressions

Kết hợp

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 với các chức năng như
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
29 và
>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
30 để thực hiện các phép biến đổi phức tạp

Thay thế

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
16 bằng các công cụ như Danh sách Trình bày và biểu thức máy phát This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python's map() Function: Transforming Iterables

Hàm bản đồ () trong Python là gì?

Bản đồ của Python () là một hàm tích hợp cho phép bạn xử lý và chuyển đổi tất cả các mục trong một điều có thể sử dụng mà không cần sử dụng một vòng lặp rõ ràng, một kỹ thuật thường được gọi là ánh xạ. MAP () rất hữu ích khi bạn cần áp dụng chức năng chuyển đổi cho từng mục trong một mục có thể lặp lại và biến chúng thành một thứ mới có thể đi được.a built-in function that allows you to process and transform all the items in an iterable without using an explicit for loop, a technique commonly known as mapping. map() is useful when you need to apply a transformation function to each item in an iterable and transform them into a new iterable.

Bản đồ có tốt hơn so với Loop Python không?

Vì MAP () được viết bằng C và được tối ưu hóa cao, vòng lặp ngụ ý bên trong của nó có thể hiệu quả hơn so với một python thông thường cho vòng lặp.Đây là một lợi thế của việc sử dụng Map ().Lợi thế thứ hai của việc sử dụng map () có liên quan đến mức tiêu thụ bộ nhớ.Với một vòng lặp For, bạn cần lưu trữ toàn bộ danh sách trong bộ nhớ của hệ thống.its internal implied loop can be more efficient than a regular Python for loop. This is one advantage of using map(). A second advantage of using map() is related to memory consumption. With a for loop, you need to store the whole list in your system's memory.

Tại sao sử dụng chức năng bản đồ thay vì một vòng lặp?

Hàm 'Bản đồ' sẽ luôn trả về một mảng trong khi cách tiếp cận 'cho vòng lặp' mà bạn xác định giá trị trả về - nếu có.Như bạn có thể thấy, nó không nhanh hơn vì chức năng gọi lại được gọi trên mọi mục, nhưng mã sạch hơn, nhanh hơn để thực hiện và mạnh hơn.. As you can see, it's not quicker because of the callback function that is called on every item, but the code is cleaner, quicker to implement and more powerful.

Bản đồ () có nhanh hơn so với vòng lặp không?

Sự khác biệt chủ yếu với các vòng lặp là sintaxe của bạn và các giá trị trả về của bạn.Bản đồ trả về các đối tượng bản đồ và vòng lặp không trả về không có gì.Kết luận đầu tiên: Bản đồ nhanh hơn các vòng?Trong trường hợp này có.Map are faster than loops? . In this case yes .