map(function, iterable) -- 10 秒
map
函数接收 1)一个函数和 2)一个可迭代元素。函数的目的是对可迭代的每个元素(想想列表)进行某种转换。然后,它将函数应用到可迭代表中的每个元素,并返回一个新的可迭代表。
mylist = [1, 2, 3, 4]
def add100(n):
return n 100
newlist = list(map(add100, mylist))
print(newlist)
# [101, 102, 103, 104]
在这里,我们有一个简单的函数 add100(n)
,它接收一个数字 n
并简单地返回 n 100
- 将
add100
函数应用于mylist
中的每个元素 add100(1)
返回101
add100(2)
返回102
add100(3)
返回103
- 添加 100(4)
返回
104 - 因此返回
[101,102,103,104]
。
filter(function, iterable) --10 秒钟
filter
函数接收 1) 一个函数和 2) 一个可迭代元素。函数的目的是决定在新的可迭代表中保留或丢弃哪些可迭代表。它不会对元素进行任何转换。
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
def larger5(n):
return n > 5
newlist = list(filter(larger5, mylist))
print(newlist)
# [6, 7, 8]
在这里,我们有一个函数 larger5(n)
接收数字 n
并在 n
大于 5 时返回 True,否则返回 False。
- 函数
larger5(n)
应用于mylist
中的每个元素 - 每次函数调用返回 True 或 False
- 如果返回 True,则保留原始元素
- 如果返回 False,则丢弃原始元素
larger5(1)
返回 Falselarger5(2)
返回 Falselarger5(3)
返回 Falselarger5(4)
返回错误信息larger5(5)
返回错误信息larger5(6)
返回 truelarger5(7)
返回 Truelarger5(8)
返回 True- 1、2、3、4、5 返回 False,因此它们被丢弃
- 只有 6, 7, 8 返回 True,因此只保留它们
- 因此返回
[6,7,8]
。
reduce(function, iterable) --10 秒
代码语言:javascript复制mylist = [1, 2, 3, 4, 5]
total = 0
for n in mylist:
total = n
print(total) # 15
下面是将 mylist
中的所有数字相加的一些基本代码。
reduce
函数接收 1) 一个函数和 2) 一个可迭代元素。该函数的目的是以某种方式将所有元素浓缩为一个值。最简单的例子就是加法
mylist = [1, 2, 3, 4, 5]
from functools import reduce
def add(a, b):
return a b
result = reduce(add, mylist)
print(result)
# 15
在这里,我们有一个简单的函数 add(a,b)
,简单地返回 a b
- 该函数应用于每一对元素(累计)
add(1, 2)
返回 3add(3, 3)
返回 6add(6, 4)
返回 10add(10, 5)
返回 15- 这就是我们最后得到 15 的原因
# 举一反三
fruits = ['apple', 'orange', 'pear', 'pineapple']
def add(a, b):
return a '-' b
from functools import reduce
result = reduce(add, fruits)
print(result)
# apple-orange-pear-pineapple
add('apple', 'orange')
返回'apple-orange'
。add('apple-orange', 'pear')
返回'apple-orange-pear'
。- 添加(
'apple-orange-pear', 'pineapple'
)返回'apple-orange-pear-pineapple'
。 - 这就是我们最后得到
'apple-orange-pear-pineapple'
的原因