Python:将map()与包含2个参数的函数一起使用

时间:2019-03-17 01:12:24

标签: python function

我有以下代码可以打印出形成一定数量的美元所需的最少数量的钞票:

dollars = 568

billSelection = [100,50,20,10,5,1]
def thingy(bill):
    global dollars
    numOfBills = dollars // bill
    dollars -= numOfBills * bill
    return numOfBills

result = list(map(thingy,billSelection))

print(result)
print(sum(result))

我想将“美元”传递给函数,以避免避免丑陋的全局变量。如果我将Dollars设置为具有1个元素的列表,并在其他位置写入dollars [0],则它会起作用,但这也不是最佳选择。有关如何干净地进行此操作的任何建议?谢谢!

2 个答案:

答案 0 :(得分:3)

虽然您可以设置一个map调用以将多个变量传递给该函数的每个调用,但在这里并不能真正为您提供帮助。这是因为您希望函数同时读取和修改dollars值。进行此工作的唯一方法是使其既是参数又是返回值,并且将其赋给map的大多数方法都不允许您将返回值用作新的{{ 1}}的值用于下一次通话。

如果您不介意将dollars放在显式循环中,则可以使其起作用:

map

答案 1 :(得分:0)

map可以采用多个参数,只要它们都是可迭代的即可。传递常量值的一种快速而肮脏的方法是将其放入与另一个可迭代的大小相同的列表中,如下所示:

dollars = 568
billSelection = [100,50,20,10,5,1]

def thingy(bill, dollars):
    # function logic goes here

result = map(thingy, billSelection, [dollars]*len(billSelection))