Maison > développement back-end > Tutoriel Python > 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)

不言
Libérer: 2018-11-26 16:36:10
avant
2012 Les gens l'ont consulté

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)
Copier après la connexion

Résultat :

14
Copier après la connexion

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文件')
Copier après la connexion

Résultat d'exécution :

不存在py文件
存在py文件
Copier après la connexion

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)
Copier après la connexion

Résultat :

17
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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'])
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal