Python은 문자열을 숫자로 변환하기 위해 축소 및 매핑을 사용합니다.

黄舟
풀어 주다: 2017-01-18 15:52:15
원래의
1431명이 탐색했습니다.

Python 프로그래밍 언어

Python은 1989년 말 Guido van Rossum이 발명한 객체 지향, 해석형 컴퓨터 프로그래밍 언어입니다. 첫 번째 공개 릴리스는 1991년에 출시되었습니다. Python 구문은 풍부하고 강력한 클래스 라이브러리를 통해 간결하고 명확합니다. 다른 언어(특히 C/C++)로 만들어진 다양한 모듈을 쉽게 연결할 수 있어 글루 언어(Glue Language)라고도 불린다.


최근 고차함수 복습을 하다가, 오랜 시간 고민을 해도 풀리지 않는 문제가 있었습니다. 그래서 아침에 정보를 찾아보고 다른 분들의 해결법도 찾아보면서 프로그래밍을 배울 때 생각이 정말 중요하다는 걸 알게 됐어요. 다음 글에서는 Python에서 Reduce와 Map을 사용하여 문자열을 숫자로 변환하는 아이디어와 방법을 소개하겠습니다. 도움이 필요한 친구들이 함께 참고해 보세요.

Python의 Reduce 및 Map 소개

map(func,seq1[,seq2...]): 주어진 시퀀스의 각 요소에 func 함수를 적용하고 다음을 사용합니다. a 반환 값을 제공하는 목록입니다. func가 None이면 func는 항등 함수로 작동하여 각 시퀀스의 요소 집합을 포함하는 n개의 튜플 목록을 반환합니다.

reduce(func,seq[,init]): func는 이진 함수이며, 쌍(이전 결과와 다음 시퀀스의 요소)이 전달될 때마다 seq 시퀀스의 요소에 func를 적용합니다. ), 지속적으로 기존 결과와 다음 값은 얻은 후속 결과에 적용되어 최종적으로 시퀀스를 단일 반환 값으로 줄입니다. 초기 값 init가 제공되면 첫 번째 비교는 init 대신 첫 번째 시퀀스 요소 사이에서 이루어집니다. 시퀀스의 처음 두 요소.

이 글에서는 Python이 문자열을 숫자로 변환하기 위해 어떻게 축소하고 매핑하는지 주로 소개합니다. 이제 자세한 구현 방법을 살펴보겠습니다.

연습:

map과 Reduce를 사용하여 문자열 '123.456'을 부동 소수점 숫자 123.456으로 변환하는 str2float 함수를 작성하세요

해결책 및 아이디어 설명:

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
로그인 후 복사

위 내용은 Python의 Reduce와 Map을 이용하여 문자열을 숫자로 변환하는 방법에 대한 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!