Python 迭代跳跃函数
目前正在使用Python 3.3。我目前有一个问题,就是如何编写一个函数,将一个Python 迭代跳跃函数,python,string,int,iterable,Python,String,Int,Iterable,目前正在使用Python 3.3。我目前有一个问题,就是如何编写一个函数,将一个iterable和一个int作为参数,并从iterable生成值,从第一个开始,跳过int指定的值数 我的代码如下: def skipping(iterable,n=0): _iters = iter(iterable) try: while True: current = next(_iters) count = n
iterable
和一个int
作为参数,并从iterable
生成值,从第一个开始,跳过int
指定的值数
我的代码如下:
def skipping(iterable,n=0):
_iters = iter(iterable)
try:
while True:
current = next(_iters)
count = n
while count != 0:
count -= 1
current = next(_iters)
count = n
yield current
except StopIteration:
pass
当我调用跳过('abcdefghijklmnopqrstuvwxyz',1)
时。我使用.join()
:
bdfhjlnprtvxz已经提供了以下功能:
def skipping(iterable, n=0):
return itertools.islice(iterable, 0, None, n+1)
该文档还为islice
提供了近似等效的Python代码:
def islice(iterable, *args):
# islice('ABCDEFG', 2) --> A B
# islice('ABCDEFG', 2, 4) --> C D
# islice('ABCDEFG', 2, None) --> C D E F G
# islice('ABCDEFG', 0, None, 2) --> A C E G
s = slice(*args)
it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1))
nexti = next(it)
for i, element in enumerate(iterable):
if i == nexti:
yield element
nexti = next(it)
代码中的错误是跳过,放弃,放弃,放弃而不是放弃,放弃,放弃。在开始跳过元素之前,需要首先生成元素:
def skipping(iterable,n=0):
iterable = iter(iterable)
try:
while True:
yield next(iterable)
for _ in xrange(n):
next(iterable)
except StopIteration:
pass
我不允许使用itertools内置模块,这是一个练习,所以我想知道如何解决这个问题。哈哈。@user2559679:请参阅为islice
提供的等效Python代码。
def islice(iterable, *args):
# islice('ABCDEFG', 2) --> A B
# islice('ABCDEFG', 2, 4) --> C D
# islice('ABCDEFG', 2, None) --> C D E F G
# islice('ABCDEFG', 0, None, 2) --> A C E G
s = slice(*args)
it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1))
nexti = next(it)
for i, element in enumerate(iterable):
if i == nexti:
yield element
nexti = next(it)
def skipping(iterable,n=0):
iterable = iter(iterable)
try:
while True:
yield next(iterable)
for _ in xrange(n):
next(iterable)
except StopIteration:
pass