Maison >développement back-end >Tutoriel Python >Python utilise réduire et mapper pour convertir des chaînes en nombres

Python utilise réduire et mapper pour convertir des chaînes en nombres

黄舟
黄舟original
2017-01-18 15:52:151493parcourir

Langage de programmation Python

Python est un langage de programmation informatique interprété et orienté objet inventé par Guido van Rossum à la fin de 1989. La première version publique a été publiée en 1991. La syntaxe Python est concise et claire, avec des bibliothèques de classes riches et puissantes. Il est souvent surnommé le langage Glue, qui permet de relier facilement différents modules réalisés dans d'autres langages (notamment C/C).


Lorsque j'examinais récemment les fonctions d'ordre supérieur, il y avait une question que je ne pouvais pas résoudre après y avoir longuement réfléchi. J'ai donc cherché des informations le matin et regardé les solutions des autres. J'ai découvert que la réflexion est vraiment importante lors de l'apprentissage de la programmation. L'article suivant vous présentera les idées et les méthodes de conversion de chaînes en nombres à l'aide de réduire et de mapper en python. Les amis dans le besoin peuvent s'y référer.

Introduction à la réduction et à la cartographie en python

map(func,seq1[,seq2...]) : Appliquez la fonction func à chaque élément de la séquence donnée, et utilisez a Une liste pour fournir la valeur de retour ; si func est None, func se comporte comme une fonction d'identité, renvoyant une liste de n tuples contenant l'ensemble des éléments dans chaque séquence.

reduce(func,seq[,init]) : func est une fonction binaire, applique func aux éléments de la séquence seq, à chaque fois qu'elle porte une paire (le résultat précédent et les éléments de la séquence suivante ), en continu Le résultat existant et la valeur suivante sont appliqués aux résultats suivants obtenus, réduisant finalement notre séquence à une seule valeur de retour : si la valeur initiale init est donnée, la première comparaison se fera entre init et les premiers éléments de la séquence au lieu de les deux premiers éléments de la séquence.

Cet article présente principalement comment Python utilise réduire et map pour convertir des chaînes en nombres. Sans plus tarder, examinons la méthode d'implémentation détaillée.

Exercice :

Utilisez map et réduire pour écrire une fonction str2float pour convertir la chaîne '123.456' en un nombre à virgule flottante 123.456

Explication de la solution et des idées :

from functools import reduce
 
def str2float(s):
 s = s.split('.') #以小数点为分隔符,把字符串分为两部分
 
 def f1(x,y): #函数1,小数点之前的数用这个函数处理
  return x * 10 + y
 
 def f2(x,y): #函数2,小数点之后的数用这个函数处理
  return x / 10 + y
 
 def str2num(str): #函数3,用于把字符串'123'逐个变为数字
  return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[str]
 
 return reduce(f1,map(str2num,s[0])) + reduce(f2,list(map(str2num,s[1]))[::-1])/10
 
 #最后一部是这个解法的精髓
 #小数点前的数'123',用 x * 10 + y 正常求和就能得出123,小数点之后的数'456'要怎样才能得出0.456呢?
 #首先把字符串'456'用list(map(str2num,s[1]))转成一个列表[4,5,6]
 #然后用[::-1]切片的方式从后往前取,列表变为[6,5,4]
 #然后把[6,5,4]利用reduce函数放到f2函数中计算,( 6 / 10 + 5) / 10 + 4 = 4.56,得出结果4.56
 #再除以一个10,得出0.456,到此成功把字符串'456'变成了浮点数0.456
 #把前后结果加起来,就得到了最终解,成功把字符串'123.456'变成了浮点数123.456

Ce qui précède est le contenu de la méthode Python de conversion de chaînes en nombres à l'aide de réduire et de mapper. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
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