【发布时间】:2019-07-18 03:23:46
【问题描述】:
将可变对象传递给函数,我们可以修改其值而无需返回。但是如果我传递一个可变对象的切片,似乎在运行函数之后,该对象的值并没有改变。 这是我的代码:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
s = list(str(x))
if s[0] == "-":
#if s=['-','1','2','3'], then s[1:]=['1','2','3'], after running self.reverseCore, s still is ['-','1','2','3']
print(id(s[1:]))
self.reverseCore(s[1:])
print(s)
else:
#if s=['1','2','3'], after running self.reverseCore, s will be['3','2','1']
self.reverseCore(s)
print(s)
def reverseCore(self, s):
print(id(s))
if len(s)<= 1:
return
l = len(s)
k = l//2
for i in range(0, k):
s[i], s[l-i-1] = s[l-i-1], s[i]
s[1:] 也是一个可变对象,那为什么没有变化呢?
【问题讨论】:
标签: python python-3.x python-2.7