考虑下面的代码:蟒蛇修改列表的切片功能
def func1(a):
a[:] = [x**2 for x in a]
a = range(10)
print a #prints [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
func1(a[:5])
print a #also prints [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我要发送列表a
的切片,并改变它的函数内部。我的预期输出是
[0, 1, 4, 9, 16, 5, 6, 7, 8, 9]
哪种方式是这样做的惯用方式?
谢谢!
也可以检查此http://stackoverflow.com/questions/22054698/python-modifying -list-a-function – Kasramvd
@Kasramvd由于另一个问题没有切片,我不相信这些是重复的。感谢您的参考... – omerbp
这是一个微不足道的差异,但主要问题是更改函数内的可变对象可能会反映调用者。 – Kasramvd