- Functional Python Programming
- Steven F. Lott
- 468字
- 2021-08-27 19:20:30
Using the map() function to apply a function to a collection
A scalar function maps values from a domain to a range. When we look at the math.sqrt() function, as an example, we're looking at a mapping from the float value, x, to another float value, y = sqrt(x), such that . The domain is limited to positive values. The mapping can be done via a calculation or table interpolation.
The map() function expresses a similar concept; it maps values from one collection to create another collection. It assures that the given function is used to map each individual item from the domain collection to the range collection-the ideal way to apply a built-in function to a collection of data.
Our first example involves parsing a block of text to get the sequence of numbers. Let's say we have the following chunk of text:
>>> text= """\ ... 2 3 5 7 11 13 17 19 23 29 ... 31 37 41 43 47 53 59 61 67 71 ... 73 79 83 89 97 101 103 107 109 113 ... 127 131 137 139 149 151 157 163 167 173 ... 179 181 191 193 197 199 211 223 227 229 ... """
We can restructure this text using the following generator function:
>>> data= list(
... v for line in text.splitlines()
... for v in line.split())
This will split the text into lines. For each line, it will split the line into space-delimited words and iterate through each of the resulting strings. The results look as follows:
['2', '3', '5', '7', '11', '13', '17', '19', '23', '29',
'31', '37', '41', '43', '47', '53', '59', '61', '67', '71',
'73', '79', '83', '89', '97', '101', '103', '107', '109', '113',
'127', '131', '137', '139', '149', '151', '157', '163', '167',
'173', '179', '181', '191', '193', '197', '199', '211', '223',
'227', '229']
We still need to apply the int() function to each of the string values. This is where the map() function excels. Take a look at the following code snippet:
>>> list(map(int, data)) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131,
137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197,
199, 211, 223, 227, 229]
The map() function applied the int() function to each value in the collection. The result is a sequence of numbers instead of a sequence of strings.
The map() function's results are iterable. The map() function can process any type of iterable.
The idea here is that any Python function can be applied to the items of a collection using the map() function. There are a lot of built-in functions that can be used in this map-processing context.
- C語言程序設計教程
- GraphQL學習指南
- The Modern C++ Challenge
- Java深入解析:透析Java本質的36個話題
- 軟件項目管理實用教程
- Oracle 18c 必須掌握的新特性:管理與實戰
- Python深度學習原理、算法與案例
- 新一代SDN:VMware NSX 網絡原理與實踐
- Java EE Web應用開發基礎
- C語言程序設計實踐
- Clojure Polymorphism
- 視窗軟件設計和開發自動化:可視化D++語言
- C Primer Plus(第6版)中文版【最新修訂版】
- ASP.NET Core and Angular 2
- Dart:Scalable Application Development