我对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 ×1