gpt4 book ai didi

python - 尝试将具有两个序列的嵌套循环转换为 lambda

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:58 25 4
gpt4 key购买 nike

我有这个功能可以检查第一个序列中的所有单词,如果它们以第二个序列中的一个单词结尾,则删除该结尾子字符串。

我正试图在一个应该进入管道处理的简单 lambda 函数中实现所有这些,但找不到实现它的方法。

如果你能帮我解决这个问题,我将不胜感激:

str_test = ("Thiship is a test string testing slowly i'm helpless")
stem_rules = ('less', 'ship', 'ing', 'es', 'ly','s')

str_test2 = str_test.split()

for i in str_test2:
for j in stem_rules:
if(i.endswith(j)):
str_test2[str_test2.index(i)] = i[:-len(j)]
break

最佳答案

这是一个激活执行它的(简单?)lambda 的单行代码。

(lambda words, rules: sum([[word[:-len(rule)]] if word.endswith(rule) else [] for word in words for rule in rules], []))(str_test.split(), stem_rules)

目前还不清楚它是如何工作的,而且这样做不是好的做法。

它通常所做的是创建一个列表,其中包含匹配项中的单个字符串,或未命中项中的空列表,然后将所有内容聚合到单个列表中,仅包含匹配项。

目前它会在每一个匹配上输出,而不仅仅是最长的匹配或类似的东西,但是一旦你弄清楚它是如何工作的,也许你可以从匹配列表中选择最短的匹配输入中的每个单词。

愿上帝与你同在。

关于python - 尝试将具有两个序列的嵌套循环转换为 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27404067/

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