【发布时间】:2017-07-09 20:01:17
【问题描述】:
考虑以下代码:
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]
哪种方式是惯用的方式?
谢谢!
【问题讨论】:
-
@Kasramvd 由于另一个问题没有切片,我不相信这些是重复的。无论如何感谢您的参考...
-
这是一个微不足道的区别,但主要问题是更改函数内部的可变对象可能会反映调用者。
-
@Kasramvd 我不同意。 before 我写了我的问题,但不确定在这些情况下处理切片的 pythonic 方法是什么。
-
@Kasramvd 仅供参考,我重新打开了,因为以前的欺骗链接只是相关的。我让你知道,因为我讨厌有人在我背后重新打开,但在这里我认为应该这样做。