您可以使它更简单/优雅?
高清锯齿(SEQ):
返回两个序列与`seq`交替的元素
的x,y = [],[]
P,Q = X,Y
为电子序列:
p.append(五)
P,Q = Q,P
回报X,Y
解决方案
如果序列
,就像你说的,是一个列表,则:
高清锯齿(SEQ):
返回序列[:: 2],SEQ [1:2]
如果序列
是完全通用的迭代,比如可能是发电机:
高清锯齿(SEQ):
结果= [],[]
对于我,在历数(SEQ)E:
结果[我%2] .append(五)
返回结果
Can you make it more simple/elegant?
def zigzag(seq):
"""Return two sequences with alternating elements from `seq`"""
x, y = [], []
p, q = x, y
for e in seq:
p.append(e)
p, q = q, p
return x, y
解决方案
If seq
, as you say, is a list, then:
def zigzag(seq):
return seq[::2], seq[1::2]
If seq
is a totally generic iterable, such as possibly a generator:
def zigzag(seq):
results = [], []
for i, e in enumerate(seq):
results[i%2].append(e)
return results