0

私はいくつかの関数 FUN(a, b): を 2 つの文字で持っています。次のような別の関数 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 に答える