Python-Programm, um eine Liste in zwei Listen mit alternierenden Elementen aufzuteilen

Können Sie es einfacher / elegant machen?

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 

  • Summe der absoluten Differenzen einer Zahl in einem Array
  • Beste Weg, um die Grundmatrix einer absorbierenden Markov Chain zu berechnen?
  • Hopcroft-Karp-Algorithmus in Python
  • Python-Brute-Force-Algorithmus
  • Ausarbeitung einer Gleichung
  • Duplikate in Listen entfernen
  • 3 Solutions collect form web for “Python-Programm, um eine Liste in zwei Listen mit alternierenden Elementen aufzuteilen”

    Wenn seq , wie Sie sagen, ist eine Liste, dann:

     def zigzag(seq): return seq[::2], seq[1::2] 

    Wenn seq ist eine total generische iterable, wie möglicherweise ein Generator:

     def zigzag(seq): results = [], [] for i, e in enumerate(seq): results[i%2].append(e) return results 

    Dies führt einen Iterator und gibt zwei Iteratoren zurück:

     import itertools def zigzag(seq): t1,t2 = itertools.tee(seq) even = itertools.islice(t1,0,None,2) odd = itertools.islice(t2,1,None,2) return even,odd 

    Wenn Sie Listen bevorzugen, dann können Sie return list(even),list(odd) .

     def zigzag(seq): return seq[::2], seq[1::2] 
    Python ist die beste Programmiersprache der Welt.