Python 中怎么将多个输入值赋值给多个变量 | map() 函数的使用

问题

有时候我们想将从 input 中获取多个值并且同时赋值给多个变量,以减少代码行数,那么有什么方法能够实现该需求呢?

分析

在 Python 当中有一个高阶函数:map() 映射函数可以解决这个问题。、

map() 映射函数

作用

map 将传入的函数依次作用到传入可迭代对象的每一个元素上,得到一个新的可迭代对象并返回。

语法

map(func, *iterables)

参数
  • func – 传入的函数(普通函数 | lambda 函数(匿名函数))
  • Iterable 可迭代对象
返回值

返回一个新的可迭代对象:迭代器

示例代码
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)
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值