Maison  >  Article  >  développement back-end  >  Introduction et analyse de la méthode Python de conversion et de conversion de données en même temps (avec exemples)

Introduction et analyse de la méthode Python de conversion et de conversion de données en même temps (avec exemples)

不言
不言avant
2018-11-26 16:35:361994parcourir

Ce que cet article vous apporte, c'est l'introduction et l'analyse de la méthode Python de conversion et de conversion de données en même temps (avec des exemples). Il a une certaine valeur de référence et les amis dans le besoin peuvent s'y référer. . J'espère que cela vous aidera.

1. Exigences

Nous devons appeler une fonction de conversion (telle que sum(), min(), max()), mais nous devons d'abord convertir le data ou Filter

2. Solution

Il existe une solution très élégante qui combine conversion de données et conversion : utiliser des expressions génératrices dans les paramètres de fonction.

Exemple 1 : Calculer la somme des carrés :

nums=[1,2,3]
s=sum(x*x for x in nums)
print(s)

Résultat :

14

Exemple 2 : Déterminer si le fichier .py existe dans le répertoire spécifié

import os
filename=os.path.dirname(os.path.abspath(__file__))
files1=os.listdir(filename+"/image")
files2=os.listdir(filename)
#any表示该iterable只要存在一个满足条件的,欧返回True,否则才返回False
if any(name.endswith('.py') for name in files1):
    print('存在py文件')
else:
    print('不存在py文件')
#any表示该iterable只要存在一个满足条件的,欧返回True,否则才返回False
if any(name.endswith('.py') for name in files2):
    print('存在py文件')
else:
    print('不存在py文件')

Résultat d'exécution :

不存在py文件
存在py文件

Exemple 3 : Obtenir la valeur minimale selon une clé du dictionnaire

marks=[
    {'age':18,'money':100},
    {'age':19,'money':500},
    {'age':17,'money':900},
    {'age':20,'money':1000},
]
min_mark=min(m['age'] for m in marks)
print(min_mark)

Résultat :

17

3, analyse

Cette solution démontre certaines des subtilités de la syntaxe lors de la transmission d'expressions génératrices en tant qu'arguments séparés aux fonctions (c'est-à-dire : ne pas avoir à réutiliser des symboles). Par exemple, les deux lignes de code suivantes signifient la même chose :

s=sum((x*x for x in nums))
s=sum(x*x for x in nums)

Par rapport à la première création d'une table temporaire, l'utilisation d'un générateur comme paramètres est généralement plus efficace et élégante. Par exemple, si vous n'utilisez pas d'expression génératrice, envisagez la méthode suivante pour calculer la somme des carrés :

nums=[1,2,3]
s=sum([x*x for x in nums])
print(s)

Cela fonctionne également, mais cela introduit une étape supplémentaire et crée une liste supplémentaire. Pour une petite liste. Cela n'a pas d'importance, mais si nums est très grand, alors une énorme structure de données temporaire sera créée et utilisée une seule fois, puis supprimée.

Les solutions basées sur un générateur peuvent transformer les données de manière itérative et sont donc beaucoup plus efficaces dans l'utilisation de la mémoire.

Certaines fonctions de conversion telles que min() et max() peuvent accepter un paramètre clé, ce qui est utile lorsque vous préférez utiliser un générateur. Par exemple, dans l'exemple ci-dessus [en prenant la valeur minimale basée sur une clé du dictionnaire], vous pouvez envisager les alternatives suivantes :

min_mark=min(marks,key=lambda m:m['age'])

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer