gpt4 book ai didi

Python:减少(字符串列表)-> 字符串

转载 作者:太空狗 更新时间:2023-10-30 01:07:54 30 4
gpt4 key购买 nike

>>> 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”之类的东西。不知何故,无法解释结果。这里有类似的问题,但不太像这个。

最佳答案

执行作为第一个参数传递的函数的结果将是下一次迭代中该函数的第一个参数。所以,你的代码是这样工作的

lambda x, y: x[0] + "." + y[0]
  1. xy分别为'alfa''bravo'时,a.b.

  2. 现在,x 将是 a.by 将是 'charlie',所以结果将是 a.c

  3. 现在,x 将是 a.cy 将是 'delta',所以结果将是 a.d

这就是为什么结果是 a.d

为了得到你想要的,从所有字符串中取出所有第一个字符来形成一个列表,并将所有元素与 . 连接在一起,就像这样

print(".".join([item[0] for item in data]))
# a.b.c.d

注意:我不喜欢这种方式,但为了完整起见,你可以用reduce来做,像这样

data = ['alfa', 'bravo', 'charlie', 'delta']
print(ft.reduce(lambda x, y: x + ("." if x else "") + y[0], data, ""))
# a.b.c.d

现在,最后一个空字符串将成为第一次迭代中 x 的第一个值。并且我们仅在 x 不是空字符串时才使用 . ,否则我们使用空字符串,以便串联会给出您想要的结果。

关于Python:减少(字符串列表)-> 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27436748/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com