2017-06-04 1 views
3

Also, wenn ich eine Liste wie diese haben:Wie ändere ich die Gruppierung von Elementen in einer Liste?

x = [0,1,2,3,4,5,6,7,8,9] 

Wie konvertiere ich diese Liste in etwa wie folgt:

x = [01,23,45,67,89] 

Wie kann ich das tun?

Ich weiß, über die in zip Funktion eingebaut, aber ich will keinen tuple und ich möchte 2 Nummern gruppiert in 1.

+1

modifizierte 'x' Liste besteht aus' str' Objekten oder 'int's? –

+2

01 ist keine gültige Integer-Repräsentation in Python ... meinst du die Funktion, die Ganzzahlen kombiniert sollten Strings zurückgeben? Oder sind deine Eingaben eigentlich Strings? – THK

Antwort

3

du versuchen:

x = [0,1,2,3,4,5,6,7,8,9] 

x = map(str, x) 

new_list = map(int, [x[i]+x[i+1] for i in range(0, len(x)-1, 2)]) 
+0

Vielen Dank! Ich wusste nichts über diesen Trick. – Ajax1234

+0

Danke für die schnelle Antwort! Ich werde es versuchen! –

+0

Beachten Sie, dass 'map' in Python 3 ein Generatorobjekt anstelle einer Liste zurückgibt, also müssen Sie' x = list (map (str, x)) 'oder' x = [str (i) für i in tun x] '. –

2

zip Verwendung und Listenkomprehensionen, wird unter der Annahme, Datentyp aus der Liste der ints geht von Strings zur Liste:

In [1]: x = [0,1,2,3,4,5,6,7,8,9] 

In [2]: pairs = zip(x[::2], x[1::2]) 

In [3]: pairs 
Out[3]: [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)] 

In [4]: [str(fst) + str(snd) for fst, snd in pairs] 
Out[4]: ['01', '23', '45', '67', '89'] 
1

Dies ist viel einfacher, ein zu verstehen, nd ist ein Einliner:

# l = list of string of items in list u with index(i) and index(i+1) and i increments by 2 
l = [ str(u[i]) + str(u[i+1]) for i in range(0, len(u), 2)] 
+0

Wenn man bedenkt, dass Guido die Karte loswerden wollte und die Funktion, die der Liste zugeordnet wird, nichts Großes ist, ist dies wahrscheinlich die bessere Antwort und wahrscheinlich auch schneller – citizen2077

Verwandte Themen