可能重复:
Python中的滚动或滑动窗口迭代器
我是编程新手,也在学习Python.我正在寻找一种有效/ pythonic的方法来解决问题.
我想要一个函数,它返回一个包含父迭代组合的迭代列表,只要组合中的元素看起来与原始父迭代相同的连续顺序.
我不确定"连续"是否将这个概念描述为"连续"的正确词语通常意味着"重复相同的元素".例如[1,1,1],'aaa'等......
我的意思是给定列表[1,2,3,4,5]:
[1,2,3]是连续的,但[1,2,4]不是.(这是否有一个词?)
这是consecutive_combinations()我创建的函数和预期的行为:
def consecutive_combinations(iterable, consec):
begin = 0
chunks = len(iterable) + 1 - consec
return [iterable[x + begin: x + consec] for x in xrange(chunks)]
def test():
t = (1,2,3,4,5)
s = "The quick brown fox jumps over the lazy dog."
CC = consecutive_combinations
assert CC(t, 2) == [(1, 2), (2, 3), (3, 4), (4, 5)]
assert CC(t, 3) == [(1, 2, 3), (2, 3, 4), (3, 4, 5)]
assert …Run Code Online (Sandbox Code Playgroud) 我试图从Eloquent Javascript这本书中理解这个功能样式代码:
http://eloquentjavascript.net/chapter6.html#exercise1
当count()函数将一个匿名函数传递给reduce()时,代码可以工作.但是如果我将函数分解为辅助函数,那么我会得到一个引用错误.
任何人都可以解释为什么count()有效但countHelper()没有?
var numbers = [1,2,3,0,1,2,3,0]
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function equals(x) {
return function(element) { return x === element;};
}
function count(test, array) {
return reduce(function(base, element) {
return base + (test(element)?1:0);
}, 0, array);
}
function countHelper(test, array) {
function helper(base, element) {
return base + (test(element)?1:0); …Run Code Online (Sandbox Code Playgroud)