Python程序到一个列表分为两个列表交替元素列表、元素、两个、程序

2023-09-11 01:52:12 作者:我对情话过敏

您可以使它更简单/优雅?

 高清锯齿(SEQ):
    返回两个序列与`seq`交替的元素
    的x,y = [],[]
    P,Q = X,Y
    为电子序列:
        p.append(五)
        P,Q = Q,P
    回报X,Y
 

解决方案 大数据分析Python列表使用教程

如果序列,就像你说的,是一个列表,则:

 高清锯齿(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