如何在Python循环中动态更新参数值?

2024-10-04 03:28:57 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是Python新手:

我正在使用Pysage用Python编写一个市场模拟,并希望使用mgr.register_actor()函数生成任意数量的代理(买方或卖方),如下所示:

for name, maxValuation, endowment, id in xrange(5):
    mgr.register_actor(Buyer(name="buyer001", maxValuation=100, endowment=500),"buyer001")
    update name, maxValuation, endowment, id

什么是运行函数调用的简洁python方法,以便每次运行循环时,name、maxValuation、endowment和id的值都会更改,例如改为name="buyer002", name="buyer003"...; maxValuation=95, maxValuation=90...; endowment=450, endowment=400...; "buyer002", "buyer003"...等等。在

我尝试过不同的for循环和list理解,但是还没有找到一种方法来动态更新函数参数而不会遇到类型问题。在

提前谢谢!在


Tags: 方法nameregisteridfor市场actormgr
1条回答
网友
1楼 · 发布于 2024-10-04 03:28:57

您可以将namesmaxValuations和{}作为列表(或迭代器),然后使用zip将相应的元素组合在一起:

names=['buyer{i:0>3d}'.format(i=i) for i in range(1,6)]
maxValuations=range(100,75,-5)
endowments=range(500,250,-50)
for name, maxValuation, endowment in zip(names,maxValuations,endowments):
    mgr.register_actor(
        Buyer(name=name, maxValuation=maxValuation, endowment=endowment),name)

关于格式字符串,'{i:0>3d}'

当我需要构建一个格式字符串时,我会参考这个“备忘单”:

^{pr2}$

所以,它是这样分解的:

   field_name 
  /
{i:0>3d}
    \\\\
     \\\`-type ("d" means integer)
      \\`-width 
       \`-alignment (">" means right adjust)
        `-fill character

相关问题 更多 >