小编NTU*_*TUI的帖子

找到连续的组合

可能重复:
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)

python combinations

4
推荐指数
1
解决办法
2425
查看次数

JavaScript:Anonymous vs Helper函数

我试图从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)

javascript functional-programming anonymous-function

3
推荐指数
1
解决办法
4571
查看次数