【问题标题】:Python Assign Multiple Variables with Map FunctionPython 使用 Map 函数分配多个变量
【发布时间】:2022-08-14 07:19:30
【问题描述】:

使用 Python,我可以像这样分配多个变量:

a, b = (1, 2)
print(a)
print(b)
# 1
# 2

我可以用地图功能做类似的事情吗?

def myfunc(a):
  return (a+1, a-1)
  
a_plus_one, a_minus_one = map(myfunc, (1, 2, 3))
# or
a_plus_one, a_minus_one = list(map(myfunc, (1,2,3)))

print(a_plus_one)
print(a_minus_one)

这些尝试给了我太多的价值来解包错误。

编辑:

期望的输出是两个新列表。

a_plus_one = (2, 3, 4)
a_minus_one = (0, 1, 2)

    标签: python python-3.x


    【解决方案1】:

    您似乎误解了 map 的工作原理。看list(map(myfunc, (1,2,3)))

    [(2, 0), (3, 1), (4, 2)]
    

    你想要转置使用zip

    >>> a_plus_one, a_minus_one = zip(*map(myfunc, (1,2,3)))
    >>> a_plus_one
    (2, 3, 4)
    >>> a_minus_one
    (0, 1, 2)
    

    欲了解更多信息:Transpose list of lists

    【讨论】:

    • 请问 zip 函数中的 * 是什么意思?
    • @siushi 它将可迭代(map)转换为单独的参数。有关更多信息,请查看链接,该链接在“未打包的参数列表”下也有自己的链接。
    【解决方案2】:

    是的你可以。您传递了 3 个值,但只获得了两个变量名。这会导致问题。要么再添加一个变量名,要么去掉一个值。

    【讨论】:

    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    相关资源
    最近更新 更多