take

こういう機能はイディオムでおいておくのではなく、ちゃんと部品化して可読性を高める、とう癖が大事なのではないかと思う。

def take(n, iterable):
    i = 0
    for item in iterable:
        if i >= n: break
        i += 1
        yield item
for element in take(10, infinite_iterator):
    if not good_condition(element):
        break
else:
    print "good"

ちなみに、先頭10個に対してだけ判定したい、というのなら、all を使えばよかったり(Python 2.5 以降)。

if all(good_condition(element) for element in take(10, infinite_iterator)):
    print "good"

で、まぁ、なんかこう先頭の n 個の要素を返すイテレータをいろいろな方法で。
最後のやつがちゃんと動く理由を理解するには for の内部動作を知っている必要があるかもしれない。

def take(n, iterable):
    for i, item in enumerate(iterable):
        if i >= n: break
        yield i
from itertools import takewhile
def take(n, iterable):
    pred = lambda t: t[0] < n
    return (items[1] for item in takewhile(pred, enumerate(iterable)))
from itertools import izip
def take(n, iterable):
    return (item for i, item in izip(xrange(n), iterable))
def take(n, iterable):
    it = iter(iterable)
    for i in xrange(n):
        yield it.next()