1. Características avanzadas - iteración: iterables de desplazamiento
Iterables Iterable :( puede actuar directamente sobre a)
1) Tipo de recogida de datos: lista, tupla, dict, str, ajuste, etc.
2) generador: generador + con una estrell función de generador
P.ej:
Iteración la lista / tupla
para S en lista:
Imprimir (S)
para X, Y en [, (2 ,. 4), (1 ,. 1). (3 ,. 9. )]:
Imprimir (X, Y)
para I, valor en el enumerate ([ ' A ' ' B ' ' C ' ]): # enumerate
función puede ser un índice en una lista - un elemento de
impresión (I, valor)
Iteración dict:
d = { ' un ' : 1, ' b ' : 2, ' c ' : 3 }
para llave en d:
impresión (tecla)
#迭代Valor
de valor en d.values ()
#迭代tecla + valor
para k, v en d.Items ()
迭代字符串:
para ch en ' ABC ' :
de impresión (CH)
判断:isinstance(xxx,Iterable)
>>> de Colecciones de importación del Iterable
>>> la isinstance ( ' ABC ' , el Iterable) # STR si iteración
verdadera
>>> la isinstance ([l, 2,3], la Iterable) # Lista si la iteración
verdadera
>>> la isinstance ( 123, Iterable) # número entero si iteración
Falso
2.高级特性-列表生成式
Ej: [x * x para x en gama (1, 11 )] >> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ] 等价于 para x en gama (1, 11 ): ... L.append (x * x) 双重: [m + n para m en ' ABC ' para n en ' XYZ ' ] >> [ ' AX ' , ' AY ' , ' AZ ' , ' CJ ' ,' POR ' , ' BZ ' , ' CX ' , ' CY ' , ' CZ ' ] 加条件: [x * x para x en rango (1, 11) si x% 2 == 0] >> [4, 16 , 36, 64, 100]
if-else:[x if x % 2 == 0 else -x for x in range(1, 11)]
3. Características avanzadas - generador (generador)
Inerte, Cálculo mientras circula
Creado:
1) la lista A de fórmula [] para ()
>>> L = [x * x para x en rango (10 )]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ]
>>> g = (x * x para x en rango (10 ))
>>> g
<generador objeto <genexpr> a 0x1022ef630>
Obtenido usando siguiente (g) con un valor de retorno, siempre llamada no conocer más elementos StopIterator lanzado
utilizar generalmente una para la iteración de bucle, generador también iterables
>>> g = (x * x para x en rango (10 ))
>>> para n en g:
... de impresión (n)
...
0
1
4
9
16
25
36
49
64
81
2) La función contiene estrell
Implementación de cambios en el proceso: la función del generador, próxima declaración de cada llamada () encuentros de implementación estrell, continúan realizando de nuevo en la estrell
def fib (max):
n, a, b = 0, 0, 1
, mientras que n < max:
impresión (b)
a, b = b, a + b
n = n + 1
retorno ' hecho '
------ -------------------------
使用estrell替换imprimir
def fib (max):
n, a, b = 0, 0, 1
, mientras que n < max :
rendimiento b
a, b = b, a + b
n = n + 1
retorno ' hecho '
llamar a:
>>> f = fib (6 )
>>> f
<generador fib objeto en 0x104feaaa0>
>>> siguiente (f) # 执行一次
1
>>> siguiente (f)
1
...
8
>>> siguiente (f)
报错
finalizada la llamada, la próxima (f) de nuevo el error, no puede obtener el valor de retorno
de error de captura mejorada
>>> g = fib (6 )
>>> mientras Verdadero:
... try :
... x = siguiente (g)
... print ( ' g: ' , x)
... excepto StopIteration como e:
. .. impresión ( ' Generador valor de retorno: ' , e.value)
... descanso
...
g: 1
g: 1
g: 2
g: 3
g: 5
g: 8
Generador de retorno Valor: hecho
Características 4. Avanzado - iterador
Iterables no es igual iterador
Generador (Generator) es iterables (iterables), también iterador (el iterador)
Pero la lista, dict, str y otros tipos de recolección de datos sólo no iterables iterador. ¿Quiere convertir iteradores necesidad de utilizar iter (función)
Debido a que el Python Iterator
objeto representa un flujo de datos, los objetos del iterador puede ser next()
invocados continúan función y devuelve el siguiente de datos hasta que la ausencia de datos lanzados StopIteration
error. Este flujo de datos puede ser visto como una secuencia ordenada, pero no se puede saber de antemano la longitud de la secuencia , sólo se puede seguir a través de la next()
realización de la próxima demanda de cálculo de una función de datos, por lo que los Iterator
cálculos son inertes , sólo tienen que devolver los siguientes datos que se calculará. Iterator
Incluso puede representar un flujo infinito de datos , como todos los números naturales. La lista nunca se almacena utilizando todos los números naturales.