相关疑难解决方法(0)

Python map函数,通过引用/值传递?

我对mapPython中的函数有疑问.

根据我的理解,该函数不会改变它正在运行的列表,而是创建一个新的并返回它.它是否正确 ?

另外,我有以下代码

def reflect(p,dir):
  if(dir == 'X'):
    func = lambda (a,b) : (a * -1, b)
   else:
    func = lambda (a,b) : (a, b * -1)
  p = map(func,p)
  print 'got', p
Run Code Online (Sandbox Code Playgroud)

points 是一个元组数组,如: [(1, 1), (-1, 1), (-1, -1), (1, -1)]

如果我以这种方式调用上述函数:

print points
reflect(points,'X')
print points
Run Code Online (Sandbox Code Playgroud)

列表points不会改变.但是在功能内部,打印功能可以正确打印出我想要的内容.

有人可能指点我在某个方向,我可以学习如何通过值/参考等传递如何在python中工作,以及我如何解决上述问题?或许我在努力模仿Python中的Haskell ......

谢谢

编辑:

说而不是p = map(func,p)

for i in range(len(p)):
  p[i] = func(p[i])
Run Code Online (Sandbox Code Playgroud)

列表的值在函数外部更新,就像通过引用一样工作.呃,希望这很清楚:S

python

6
推荐指数
1
解决办法
2936
查看次数

标签 统计

python ×1