Liste ist der am häufigsten verwendete Datentyp in Python und in der Standardbibliothek stehen zahlreiche Funktionen zur Verfügung.
Wenn man jedoch eine mehrdimensionale Liste in eine eindimensionale Liste umwandelt (ich weiß nicht, ob dafür viele Anforderungen bestehen), ist es wirklich nicht einfach, eine nützliche Funktion zu finden .
Ich weiß, dass es Flatten zwischen Ruby, Mathematica und Groovy gibt.
Wenn die Liste wenige Dimensionen hat und regelmäßig ist, ist sie relativ einfach zu handhaben
Zum Beispiel:
li=[[1,2],[3,4],[5,6]] print [j for i in li for j in i] #or from itertools import chain print list(chain(*li)) #or a=[[1,2],[3,4],[5,6]] t=[] [t.extend(i) for i in a] print t #or print sum(li,[])
Für komplexere, wie zum Beispiel: li=[1,[2],[[3]],[[4,[5] ,6]] ], die obige Methode ist nicht einfach zu verwenden, daher müssen wir die Methode
ändern. Sie sieht aus wie ein Baum in der Struktur. Daher haben wir die folgende Methode 🎜>
def flat(tree): res = [] for i in tree: if isinstance(i, list): res.extend(flat(i)) else: res.append(i) return res
def flatten(seq): s=str(seq).replace('[', '').replace(']', '') #当然也可以用正则 return [eval(x) for x in s.split(',') if x.strip()]
flat=lambda L: sum(map(flat,L),[]) if isinstance(L,list) else [L]
from Tkinter import _flatten li=reduce(lambda *x:list(x),range(2,6),[1]) print li print _flatten(li) #Out: #[[[[[1], 2], 3], 4], 5] #(1, 2, 3, 4, 5) #对元组同样适用