使用迭代函数定义函数

时间:2013-10-31 10:59:10

标签: python function iteration

我有一些功能FUN(a,b):两个字符。我想定义另一个函数foo(s),例如

foo(s):
    FUN(a[0],a[1])
    FUN(a[2],a[3])
    FUN(a[4],a[5])
    ...

表示s中的所有字符(假设s是偶数长度)。我的想法是我们基本上需要运行FUN(a,b)(len(s)%2)次,但我不确定如何以这种方式迭代函数,同时还确保FUN具有正确的输入。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这对zip来说很容易:

def fun(a, b):
    print a, b


def foo(s):
    for x, y in zip(s[::2], s[1::2]):
        fun(x, y)


foo("12345678")

输出:

1 2
3 4
5 6
7 8

使用生成器的一种更有效的方法是使用izip(相同的输出):

from itertools import izip


def fun(a, b):
    print a, b


def foo(s):
    for x, y in izip(s[::2], s[1::2]):
        fun(x, y)


foo("12345678")

答案 1 :(得分:1)

当问题被iteration标记时,必须有办法iter。 : - )

values = range(10)

def do_work(x, y):
    print('{}_{}'.format(x, y))

it = iter(values)
try:
    while it:
        do_work(next(it), next(it))
except StopIteration:
    pass

来自l4mpi的好建议:

it = iter(values)
for value in it:
    do_work(value, next(it))