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:
Operador | Significado | Expresión | Resultado |
+ | Fusionarse juntos | ('a', 'b', 'c') + (1, 2, 3) | ('a', 'b', 'c', 1, 2, 3) |
* | Repetir | ('a',) * 3 | ('a', 'a', 'a') |
in | Si 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
- Familiarizado con las diversas operaciones en tuplas.
- Compara las similitudes y diferencias entre listas y tuplas.
留言
張貼留言