2016-07-23 8 views
0

Ich habe eine Liste von Zeichenfolgen und möchte eine neue Liste, die auf jedem Element eine Anzahl von Zeiten.List Verständnis: Multiplizieren Sie jede Zeichenfolge zu einer einzigen Liste

lst = ['abc', '123'] 
n = 3 

Ich kann für Schleife mit einem das tun:

res = [] 
for i in lst: 
    res = res + [i]*n 
print(res) 

['abc', 'abc', 'abc', '123', '123', '123'] 

Wie kann ich es mit Liste Verständnis zu tun?

mein Bestes versuchen, so weit:

[ [i]*n for i in ['abc', '123'] ] 
[['abc', 'abc', 'abc'], ['123', '123', '123']] 

Antwort

6

ein Verwenden nested list comprehension

>>> lst = ['abc', '123'] 
>>> n = 3 
>>> [i for i in lst for j in range(n)] 
['abc', 'abc', 'abc', '123', '123', '123'] 

Die Idee dahinter ist, Sie Schleife durch die Liste zweimal und Sie jedes der Element drucken dreimal.

Siehe What does "list comprehension" mean? How does it work and how can I use it?

+0

Side Kommentar: Ich verstehe, dass nicht eine verschachtelte Liste sein würde? z.B. '[[1,2], [3,4]]' ... – Luis

+0

@Luis Ja, um eine verschachtelte Liste zu erhalten, müssen Sie ein weiteres Paar Klammern hinzufügen. So etwas wie '[[i für j im Bereich (n)] für i in lst] '. Nehmen Sie sich eine Stunde Zeit und gehen Sie durch diese Links. Sie gehören zu den besten Dokumenten und helfen Ihnen, Listen-Comps besser zu verstehen. Alles Gute. –

1

Es kann auch als geschehen:

>>> lst = ['abc', '123'] 
>>> n=3 
>>> [j for i in lst for j in (i,)*n] 
['abc', 'abc', 'abc', '123', '123', '123'] 
Verwandte Themen