2017-12-19 10 views
2

ich unten Eingänge haben,Alternative Wege anstelle von zip

inp = 'Sample' 
n = 5 

würde Ich mag eine Liste von Tupeln von n Elemente erzeugen input mit dem Index zu packen. So, dass meine Ausgabe ist,

[('Sample', 0), ('Sample', 1), ('Sample', 2), ('Sample', 3), ('Sample', 4)] 

Below Snippet macht die Arbeit ordentlich,

output = zip([inp]*n, range(n)) 

Einfach nur neugierig über alternative Ansätze, um das gleiche zu lösen?

+3

'[('Sample ', x) für x im Bereich (n)] ' – ncfirth

+0

Ah !!! Das ist wirklich einfach und ordentlich als mit 'zip'! Vielen Dank!! –

Antwort

2

Die naheliegendste Lösung (eine Liste Verständnis) bereits mentioned in the comments gewesen, so eine Alternative ist hier mit itertools.zip_longest, nur so zum Spaß -

from itertools import zip_longest 

r = list(zip_longest([], range(n), fillvalue=inp)) 
print(r) 
[('Sample', 0), ('Sample', 1), ('Sample', 2), ('Sample', 3), ('Sample', 4)] 

Auf Python2.x Sie izip_longest stattdessen brauchen würden.

0
inp='sample' 
n=5 
print [(inp,i) for i in range(n)] 

es zeigt, O/P als:

[('Probe', 0), ('Probe', 1), ('Probe', 2) ('Probe', 3), ('Probe', 4)]

+0

Listenverständnis ist ein guter Weg, um das Problem über die Zip-Funktion zu lösen? –

Verwandte Themen