【问题标题】:Python - Exhaust map of multiple iterablesPython - 多个迭代的排气图
【发布时间】:2014-04-19 20:24:48
【问题描述】:
a=['1','2','3']

map(int,a) 可以使用 list 耗尽以产生输出:

list(map(int,a))

输出:1,2,3


a=['1','2','3']
b=['1','2']

我如何耗尽以下内容:

map(int,a,b)

【问题讨论】:

  • “排气”是什么意思?你的意思是a=iter([1,2,3])
  • 在这种情况下,我用它作为一个术语来表示不是 的输出的产生
  • 啊,我不知道 map 在 Python 3.x 版本中返回 iterable。因为map 在 Python 2.7 中返回 list。我知道你为什么使用“排气”。

标签: python python-3.x map iterable


【解决方案1】:

如果要将每个列表转换为整数列表,可以这样做

a, b = ['1','2','3'], ['1','2']
print(list(map(lambda x: map(int,x), [a, b])))
# [[1, 2, 3], [1, 2]]

可以分配给ab后面,像这样

a, b = map(lambda x: map(int,x), [a, b])

如果要链接元素,可以使用itertools.chain,像这样

from itertools import chain
print(list(map(int, chain(a,b))))
# [1, 2, 3, 1, 2]

编辑:如果你想传递多个可迭代的参数,那么函数还必须接受那么多参数。例如,

a, b = [1, 2, 3], [1, 2, 3]
print(list(map(lambda x, y: x + y, a, b)))
# [2, 4, 6]

如果我们传递三个可迭代对象,函数必须接受三个参数,

a, b, c = [1, 2, 3], [1, 2, 3], [1, 2, 3]
print(list(map(lambda x, y, z: x + y + z, a, b, c)))
# [3, 6, 9]

如果迭代器的大小不同,则将考虑最小尺寸的迭代器的长度。所以

a, b, c = [1, 2, 3], [1, 2, 3], [1, 2]
print(list(map(lambda x, y, z: x + y + z, a, b, c)))
# [3, 6]

【讨论】:

  • 在这两种情况下,这似乎使 map 的第二个参数成为一个可交互的列表。我试图了解如何用尽表单 map(int,iterable1,iterable2,...)
  • @Robert 你的预期输出是什么?
  • 我正在阅读 Python 3 文档并得到“如果传递了其他可迭代参数,则函数必须采用那么多参数并并行应用于所有可迭代对象的项目。对于多个可迭代对象,迭代器当最短的迭代用完时停止。”我想我期待 1,2 或两组 1,2 但我不知道它会以什么形式出现,所以我问了排气问题以揭示答案。
  • @Robert:int 的第二个参数是基础。所以你可以通过list(map(int, '19F', [2,10,16])) 得到[1, 9, 15]
  • 问这个问题的另一种方式可能是:什么是地图的例子,有多个迭代,显示输出。
猜你喜欢
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多