Ich sehe bestehende Fragen, die sich auf bestimmte Programmiersprachen beziehen. Es gibt Implementierungsunterschiede in bestimmten Sprachen, aber gibt es einen theoretischen konzeptionellen Unterschied?Gibt es einen Unterschied zwischen einer Liste und einem Tupel?
Änderbar vs unveränderlich: In Python sind Listen vollständig änderbar, während Tupel unveränderlich oder persistent unveränderlich sind, so dass Änderungen neue Tupel erstellen und Änderungen an Ort und Stelle nicht tun. Aber das ist nur ein Implementierungsdetail. In anderen Sprachen sind Tupel veränderbar und Listen sind unveränderlich.
Heterogene vs homogenen: Semantisch ist Tupel in der Regel heterogen, während Listen in der Regel homogen sind, aber das ist eher eine Konvention und es gibt viele Ausnahmen. Dynamisch typisierte Sprachen wie Python haben heterogene Listen. Haskell zum Beispiel hat Unterstützung für vollständig statisch typisierte heterogene Listen namens HList.
Finite vs Infinite: Theoretisch kann eine Liste unendlich sein, und einige Programmiersprachen (Haskell) unterstützen unendliche Listen. Ein Tupel darf nicht unendlich sein.
UPDATE: Der einzige theoretische Unterschied ist, dass ein Tupel endlich sein muss, während eine Liste theoretisch unendlich sein kann. Der Rest der Unterschiede sind reine Implementierungsunterschiede.
Wikipedia sagt "Ein Tupel ist eine endliche geordnete Liste von Elementen.".
Dies macht deutlich, dass ein Tupel eine Liste ist, aber eine endliche Liste.
In welcher Sprache (n) ist die Wandlungsfähigkeit umgekehrt? –
C++ - Listen und Tupel sind beide änderbar. – StilesCrisis
Sie können diese Frage zu http://cs.stackexchange.com/ – StilesCrisis