首页 新闻 会员 周边

reduce,slice

0
[已解决问题] 解决于 2026-07-01 16:02

reduce是减少,在计算机中是折叠,合并,汇总的意思

functools.reduce函数

reduce的功能非常好用,看下面的示例:

1
2
3
>>> import functools
>>> functools.reduce(lambda x, y: x+y, [1,2,3,4,5])
15

它的语法为:

reduce(func, sequence[, initial]) -> value

reduce有两个过程:

  1. 先从sequence中取两个元素作为func的参数,该函数返回一个结果A。这是初始化的过程
  2. 将结果A与sequence的下一个元素作为func的参数,继续返回一个结果B,将结果B与下一个元素作为func参数,依次类推,直到迭代完sequence中所有元素

如果给reduce设置了initial参数,则跳过初始化的过程,直接将Initial与sequence的第一个元素作为func的参数。如果没有给定sequence,而给了Initial,则initial作为直接返回的默认值。

例如,从序列中取出最大值:

1
2
3
4
5
>>> reduce( lambda x, y: x if x > y else y, [1,2,3,4,5] )
5

>>> reduce( lambda x, y: x if x>y else y, [1,2,3,4,5],10 )
10
*Tesla*的主页 *Tesla* | 老鸟四级 | 园豆:2040
提问于:2026-07-01 15:23
< >
分享
最佳答案
1
在 Python 中,slice 是一个内置函数(也是一个类),它的核心作用是创建一个切片对象,用来表示一个范围。
你可以把它理解为:把 my_list[start:stop:step] 
如果你只需要对列表切一次,直接用 my_list[1:5] 就行了。但如果你需要对多个列表进行完全相同的切片操作,或者切片参数是动态计算的,slice 就非常有用了。
# 定义一个切片对象 my_slice = slice(1, 5, 2) # 相当于 [1:5:2] list_a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list_b = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] # 把切片对象直接传给方括号 print(list_a[my_slice]) # 输出: [1, 3] print(list_b[my_slice]) # 输出: ['b', 'd']
*Tesla* | 老鸟四级 |园豆:2040 | 2026-07-01 15:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册