>>> import functools as ft
>>> bk = ft.reduce(lambda x, y: x[0] + "." + y[0], ['alfa', 'bravo', 'charlie', 'delta'])
>>> bk
'a.d'
>>> km = ft.reduce(lambda x, y: x + y, [1, 2, 3, 4])
>>> km
10
>>> bk = ft.reduce(lambda x, y: x[0] + y[0], ['alfa', 'bravo', 'charlie', 'delta'])
>>> bk
'ad'
>>>
我想是“a.b.c.d”或“abcd”。不知怎么的,无法解释结果。这里也有类似的问题,但不完全像这个问题。
执行作为第一个参数传递的函数的结果将是下一次迭代中该函数的第一个参数。所以,你的代码是这样工作的
当
x
时,y
分别是'alfa'
和'bravo'
,a.b
。现在,
x
将是a.b
,y
将是'charlie'
,所以结果将是a.c
现在,
x
将是a.c
,y
将是'delta'
,所以结果将是a.d
这就是为什么结果是
a.d
要得到您想要的结果,请从所有字符串中获取所有第一个字符以形成一个列表,并使用
.
将所有元素连接在一起,如下所示注意:我不喜欢这样,但是为了完整起见,可以使用
reduce
这样做现在,最后一个空字符串将是第一次迭代中
x
的第一个值。只有当x
不是空字符串时,我们才使用.
,否则我们使用空字符串,这样连接将得到您想要的结果。相关问题 更多 >
编程相关推荐