0

我有一些功能 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 具有正确的输入。有任何想法吗?

4

2 回答 2

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")
于 2013-10-31T11:04:37.143 回答
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))
于 2013-10-31T11:13:49.207 回答