2016-10-28 5 views
0

Ich möchte ein Tupel mit den ersten Elementen jedes Tupels bilden. Ich bin ein Anfänger in Python, vielleicht ist dies eine einfache, aber ich kann keinen Weg finden, es plz Hilfe zu tun.Wie ein neues Tupel mit dem ersten Wert jedes Tupels eines Tupel-Tupels gebildet wird?

ex:

Eingang

x = (('A','B','C'),('D','E','F'),('G','H','I')) 

Ausgang:

y= ('A', 'D', 'G') 
+0

Haben Sie etwas versucht? Es sollte sehr einfach sein, Sie für jedes Element zu loopen und die erste Position jedes Tupels zu erhalten. Hast du das versucht? – Tom

Antwort

3

Verwenden Verständnis und zu einem Tupel konvertieren;

>>> x = (('A','B','C'),('D','E','F'),('G','H','I')) 
>>> y = tuple([l[0] for l in x]) 
>>> y 
('A', 'D', 'G') 
+0

Oder nur 'tuple (l [0] für l in x)', mit einem Generator Ausdruck anstelle einer Liste Verständnis. – user2357112

+0

@ user2357112 danke. Ich habe nur '(l [0] für l in x) probiert, und den Generatoraspekt total verpasst. – CAB

+0

Diese Syntax wurde von genexps übernommen, und jede alternative Tupel-Verständnis-Syntax wäre nicht lesbarer gewesen als 'tuple (... for ... in ...)'. – user2357112

3
x = (('A','B','C'),('D','E','F'),('G','H','I')) 

for each in zip(*x): 
    print(each) 

druckt:

('A', 'D', 'G') 
('B', 'E', 'H') 
('C', 'F', 'I') 

Verwenden Sie die zip() Funktion. Read more here.

Edited:

wie CAB sagt, wenn man nur die erste möchten, können Sie tun:

y = zip(*x)[0] 
+1

Wenn Sie nur das erste Tupel möchten; 'y = zip (* x) [0]' – CAB

+0

Vielen Dank für die Beantwortung dieser Frage –

Verwandte Themen