Python3- punto final difusa (funciones avanzadas)

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 ' ]): # enumeratefunció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 Iteratorobjeto 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 StopIterationerror. 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 Iteratorcálculos son inertes , sólo tienen que devolver los siguientes datos que se calculará. IteratorIncluso puede representar un flujo infinito de datos , como todos los números naturales. La lista nunca se almacena utilizando todos los números naturales.

 

Supongo que te gusta

Origin www.cnblogs.com/jpga/p/12580343.html
Recomendado
Clasificación