赞
踩
有时候我们想将从 input 中获取多个值并且同时赋值给多个变量,以减少代码行数,那么有什么方法能够实现该需求呢?
在 Python 当中有一个高阶函数:map() 映射函数可以解决这个问题。、
map 将传入的函数依次作用到传入可迭代对象的每一个元素上,得到一个新的可迭代对象并返回。
map(func, *iterables)
返回一个新的可迭代对象:迭代器
from collections import Iterator def f(x): return x + 2 list1 = [2, 2, 1, 0, 8] result = map(f, list1) # 输出 map() 返回的对象 print(result) # 判断 map() 返回的对象是否为迭代器 print(isinstance(result, Iterator)) # 访问迭代器的元素 print(list(result)) result = map(lambda x: x + 2, list1) print(list(result)) result = map(lambda x: x if x % 2 == 0 else x + 1, list1) print(list(result)) # 运行结果: <map object at 0x0000014CD2A20CF8> True [4, 4, 3, 2, 10] [4, 4, 3, 2, 10] [2, 2, 2, 0, 8]
既然知道了 map() 函数的一个基本用法,那么接下来分析我们需要解决的这个问题:
要想将从 input 中获取到的内容变成一个可迭代对象,由于获取到的是一个字符串,所以可以通过操作字符串的函数 split() 对字符串进行分割并返回一个列表,然后在 map() 中第一个参数传入 int() 函数将字符串转换成数字。
例如想要输入并获取一个三维坐标:
x, y, z = map(int, input('请输入一个三维坐标:').split())
print(f'该三维坐标为:({x},{y},{z})')
# 运行结果:
请输入一个三维坐标:1 2 3
该三维坐标为:(1,2,3)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。