我正在尝试使用迭代器在Python中构建一个"船长".
这个想法是给定以下内容:
' '.join([str(i) for i in skippy([1,'a','b','b',2,1,1,1,'c','d','b'])
Run Code Online (Sandbox Code Playgroud)
我们得到了
1 b b 2 1 d b
Run Code Online (Sandbox Code Playgroud)
作为输出.规则是每当我们达到整数x时,我们跳过iterable中的以下 x项.
到目前为止,我有:
def skippy(it):
p = 0
for x in it:
if type(x) == int:
for x in range(x):
p = next(it)
yield p
Run Code Online (Sandbox Code Playgroud)
这不能按预期工作,任何关于如何解决它的想法?
不确定你要使用单独的p和x.你可以这样做:
def skippy(it):
it = iter(it)
for x in it:
if type(x) is int:
yield x
for skip in range(x):
next(it)
else:
yield x
>>> ' '.join([str(i) for i in skippy(iter([1,'a','b','b',2,1,1,1,'c','d','b']))])
'1 b b 2 1 d b'
Run Code Online (Sandbox Code Playgroud)
iter如果您希望能够直接传递列表,则需要调用参数,因为列表是可迭代的,而不是迭代器,并且您只能调用next迭代器.
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |