Tupla de Python (tuple)

Tupla de Python (tuple)


Una tupla es muy similar a una lista. La diferencia entre las dos es que la tupla no se puede cambiar y la lista se puede cambiar.
Tupla de Python

Crear una tupla

A diferencia de los corchetes de la lista, la tupla encierra todos los elementos entre paréntesis, separados por comas:
In [15]: mytuple = ('a', 'b', 3, 8.9, [1,2])

In [16]: mytuple
Out[16]: ('a', 'b', 3, 8.9, [1, 2])

In [17]: x = ('a', )  # una tupla con un solo elemento
In [18]: y = ()  # Tupla vacía

El índice de la tupla (índice)

El mecanismo de indexación de la tupla es exactamente el mismo que el de la lista, consulte el siguiente ejemplo:
In [22]: mytuple[0]
Out[22]: 'a'

In [23]: mytuple[1]
Out[23]: 'b'

In [24]: mytuple[3]
Out[24]: 8.9
Del mismo modo, las tuplas también tienen índices negativos:
In [25]: mytuple[-1]
Out[25]: [1, 2]

In [26]: mytuple[-2]
Out[26]: 8.9
El índice de una tupla de Python puede ser un índice positivo (de principio a fin) o un índice negativo (de extremo a extremo), que resume las siguientes relaciones:
Tuple:         ('a', 'b', 'c', 'd', 'e')
                  |    |    |    |    |
Índice positivo:  0    1    2    3    4
Índice negativo:  -5  -4   -3   -2   -1
Debido a que las tuplas no son modificables, notificaremos un error cuando intentemos modificar un elemento a través de un índice:
In [116]: x = ('a', 1, [1,2])

In [117]: x[1] = 2
--------------------------------------------
TypeError    Traceback (most recent call last)
<ipython-input-117-fe7b4192b649> in <module>
----> 1 x[1] = 2

TypeError: 'tuple' object does not support item assignment

In [118]: x[2][1] = 3  #修改的不是元组,而是list

In [119]: x
Out[119]: ('a', 1, [1, 3])

In [121]: x[2] = ['a', 'b']  # 此处企图修改第三个元素,报错!
--------------------------------
TypeError    Traceback (most recent call last)
<ipython-input-121-339ad61923f7> in <module>
----> 1 x[2] = ['a', 'b']

TypeError: 'tuple' object does not support item assignment
Sin embargo, logramos modificar la lista en la tupla. Los primeros dos elementos de la tupla x, 'a', 1 son inmutables, y el tercer elemento es la lista. Esta lista se puede cambiar, pero el tercer elemento no se puede asignar a otras listas (el último ejemplo en el ejemplo anterior) Una operación) o cualquier otro tipo de datos.

Rebanada de una tupla

La tupla de la tupla es la misma que la lista.
In [27]: mytuple[1:3]
Out[27]: ['b', 3]

In [28]: mytuple[:3]
Out[28]: ['a', 'b', 3]

In [29]: mytuple[1:]
Out[29]: ['b', 3, 8.9, [1, 2]]

In [30]: mytuple[:]
Out[30]: ['a', 'b', 3, 8.9, [1, 2]]
En el ejemplo anterior, pueden faltar los índices de inicio y finalización del rango de división, la falta a la izquierda comienza desde el principio ( 0 ) y la falta a la derecha es todo lo siguiente.

Operador de tupla

El operador de la tupla es el mismo que el de la lista:
OperadorSignificadoExpresiónResultado
+Fusionarse juntos('a', 'b', 'c') + (1, 2, 3)('a', 'b', 'c', 1, 2, 3)
*Repetir('a',) * 3('a', 'a', 'a')
inSi es un elemento'a' in ('a', 'b')True
La sintaxis for x in the-tuple recorrer (iterar) una tupla de principio a fin es: for x in the-tuple :
for x in (1, 2, 3):
    print(x)

Eliminar tupla

(1) Eliminar toda la tupla
In [35]: mytuple = ['a', 'b', 3, 8.9, [1,2]]

In [36]: del mytuple

In [37]: mytuple
---------------------------------------------------------------------------
NameError    Traceback (most recent call last)
<ipython-input-37-1dc2d082cc20> in <module>
----> 1 list_a

NameError: name 'list_a' is not defined
Dado que las tuplas son inmutables, no podemos usar del para eliminar elementos de una tupla como una lista.
In [127]: x = ('a', 1, [1,2])

In [128]: del x[0]
--------------------------------
TypeError     Traceback (most recent call last)
<ipython-input-128-ec9e6e663ef5> in <module>
----> 1 del x[0]

TypeError: 'tuple' object doesn't support item deletion

Funciones integradas relacionadas con tuple

(1) len ()
Calcule la longitud de la tupla, que es el número de elementos de la tupla)
In [55]: len([1,2,3])
Out[55]: 3
(2) max ()
Devuelve el valor máximo en el elemento de tupla. Los elementos de la tupla deben ser del mismo tipo y se pueden comparar. Por ejemplo, todos son numéricos o de cadena. Si los tipos no son uniformes, se informará un error:
In [57]: max(('a', 'b', 'c'))
Out[57]: 'c'

In [58]: max((1,2,'a'))
---------------------------------------------------------------------------
TypeError   Traceback (most recent call last)
<ipython-input-58-d6e404f692f3> in <module>
----> 1 max((1,2,'a'))

TypeError: '>' not supported between instances of 'str' and 'int'
(3) min ()
Devuelve el valor mínimo en un elemento tupla. Se requiere que el tipo de elemento sea el mismo que max ().
In [59]: min((1,2,3))
Out[59]: 1

In [60]: min(('a', 'b', 'c'))
Out[60]: 'a'

In [61]: min((1,2,'a'))
---------------------------------------------------------------------------
TypeError    Traceback (most recent call last)
<ipython-input-61-c2d30ec5fffc> in <module>
----> 1 min((1,2,'a'))

TypeError: '<' not supported between instances of 'str' and 'int'
(4) sum ()
Calcula la suma de todos los elementos de una tupla cuyo tipo de elemento debe ser numérico (entero, flotante)
In [63]: sum((1,2,3))
Out[63]: 6

In [64]: sum((1.2, 3.2, 4.3))
Out[64]: 8.7

In [65]: sum(('a', 'b', 'c'))
---------------------------------------------------------------------------
TypeError   Traceback (most recent call last)
<ipython-input-65-f2e6eb2051e3> in <module>
----> 1 sum(('a', 'b', 'c'))

TypeError: unsupported operand type(s) for +: 'int' and 'str'
(5) sorted ()
Devuelve una lista ordenada, pero no cambia la tupla original.
In [66]: sorted((3, 9, 0, 5))
Out[66]: [0, 3, 5, 9]

In [68]: sorted(('python', 'yuanrenxue', 'good'))
Out[68]: ['good', 'python', 'yuanrenxue']
(6) tuple ()
Genere una tupla vacía o convierta otros tipos de datos en tuplas.
In [69]: tuple()
Out[69]: ()

In [70]: tuple('python')
Out[70]: ('p', 'y', 't', 'h', 'o', 'n')
(7) any ()
Devuelve True siempre que uno de los elementos de la tupla sea True.
In [72]: any((0, '', '3'))
Out[72]: True
(8) all ()
Solo Verdadero si todos los elementos de la tupla son Verdaderos.
In [73]: all((0, '', '3'))
Out[73]: False

In [74]: all((3, 'a', True))
Out[74]: True

Método incorporado para las tuplas

Dado que la tupla es inmutable, su método es mucho menor que el de la lista, solo dos:
El índice (v) devuelve el índice del primer elemento con un valor de v;
Count (v) devuelve el número de elementos con un valor de v.
In [138]: x = (1,3,2,6,2,4)

In [139]: x.index(2)
Out[139]: 2

In [140]: x.count(2)
Out[140]: 2

Desembalaje de tuplas

Si desea inicializar varias variables en Python, puede usar el siguiente método:
In [138]: x = (1,3,2,6,2,4)

In [139]: x.index(2)
Out[139]: 2

In [140]: x.count(2)
Out[140]: 2
El código anterior asigna a, b, c y d a 1, 2, 3 y 4 respectivamente. En este momento, a es 1, b es 2, c es 3 y d es 4.
También hay un método más de desempaquetar, que es usar el asterisco * para absorber los elementos adicionales:
In [146]: x = (1,2,3,4,5)

In [147]: a, *b = x # x tiene 5 elementos, solo hay dos variables a la izquierda, y las adicionales son absorbidas por b con *

In [148]: a, b
Out[148]: (1, [2, 3, 4, 5])

In [149]: a, *b, c = x #Gracias a b con *

In [150]: a,b,c
Out[150]: (1, [2, 3, 4], 5)

In [151]: *a, b, c = x #多亏带*的a

In [152]: a,b,c
Out[152]: ([1, 2, 3], 4, 5)

In [153]: a,b,c = x #Sin *, los 5 elementos de x no pueden coincidir con 3 variables
---------------------
ValueError     Traceback (most recent call last)
<ipython-input-153-58e3b82a91cc> in <module>
----> 1 a,b,c = x

ValueError: too many values to unpack (expected 3)

Resumen

La tupla es muy similar a la lista, la primera no se puede modificar y la última se modifica a voluntad.

Practica

  1. Familiarizado con las diversas operaciones en tuplas.
  2. Compara las similitudes y diferencias entre listas y tuplas.

留言