543 Stimmen

Warum gibt es keine Tupel-Komprehension in Python?

Wie wir alle wissen, gibt es Listenverständnis, wie z.B.

[i for i in [1, 2, 3, 4]]

und es gibt Wörterbuchverständnis, wie z.B.

{i:j for i, j in {1: 'a', 2: 'b'}.items()}

aber

(i for i in (1, 2, 3))

wird letztendlich in einen Generator umgewandelt, nicht in eine tuple-Verständnis. Warum ist das so?

Meine Vermutung ist, dass ein tuple unveränderlich ist, aber das scheint nicht die Antwort zu sein.

0voto

KnowledgeSeeeker Punkte 620

Weil Sie keine Elemente an ein Tupel anhängen können. So kann eine einfache Listenkomprehension in grundlegenderen Python-Code umgewandelt werden.

_list = [1,2,3,4,5]
clist = [ i*i for i in _list ]
print(clist)

clist1 = []
for i in _list:
    clist1.append(i*i)
print(clist1)

Wenn Sie nun eine Tuple-Komprehension für das obige Beispiel verwenden, bedeutet dies, dass Sie Elemente in ein Tupel einfügen, was nicht erlaubt ist. Sie können jedoch diese Liste in ein Tupel umwandeln, sobald es bereit ist, indem Sie tuple(clist1) verwenden

-2voto

Arun Punkte 2870

Nun gibt es auch Tuple Comprehension in Python3. Du kannst dem unten stehenden Code-Schnipsel folgen.

(k*k for k in range(1,n+1)) 

Es wird ein Generator-Objekt Comprehension zurückgeben.

-5voto

Rohit Malgaonkar Punkte 467

Wir können Tupel aus einer Listenabfrage generieren. Die folgende fügt zwei Zahlen sequenziell in ein Tupel ein und gibt eine Liste von Zahlen von 0 bis 9 zurück.

>>> print k
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> r= [tuple(k[i:i+2]) for i in xrange(10) if not i%2]
>>> print r
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X