我自己在学习python,所以我不知道有谁可以寻求帮助或问我愚蠢的问题......我来这里就是为了这个。这里的问题:我在codewars上训练了一些kata,不能解决一个,所以我看到了解决方案,我甚至不知道这个代码是如何工作的!当然,我读过关于next()
和cycle()
的文章,但为什么它们会在一起……我就是不明白。请你解释一下这个代码,它是如何工作的,为什么它是这样工作的。
from functools import reduce
from itertools import cycle
def reduce_by_rules(lst, rules):
rs = cycle(rules)
return reduce(lambda x, y: next(rs)(x, y), lst)
2条答案
按热度按时间cqoc49vn1#
假设你有两个函数。下面的代码示例的输出是
21
。为什么
首先,x、y来自
lst
的第一、第二元素。在continue中,x来自函数的返回,y来自lst
的元素。x=1
,y=2
->one(1,2)
->1+2+1
-> 4x=4
,y=3
->two(4,3)
->4+3+2
-> 9x=9
,y=4
->one(9,4)
->9+4+1
-> 14x=14
,y=5
->two(14,5)
->14+5+2
-> 21 -> returnpkln4tw62#
cycle(rules)
只是一组重复的函数,例如:如果它帮助lemme定义我自己的循环函数:
我自己的reduce: