Python函数修改字符串
曾经有人要求我创建一个给定字符串的函数,然后从字符串中删除一些字符。
是否可以在Python中执行此操作?
可以对列表执行此操作,例如:
def poplist(l):
l.pop()
l1 = ['a', 'b', 'c', 'd']
poplist(l1)
print l1
>>> ['a', 'b', 'c']
我想要对字符串执行此功能。我能想到的唯一方法是将字符串转换为列表,删除字符,然后将其重新连接回字符串。但是然后我将不得不返回结果。例如:
def popstring(s):
copys = list(s)
copys.pop()
s = ''.join(copys)
s1 = 'abcd'
popstring(s1)
print s1
>>> 'abcd'
我了解为什么此功能无法使用。问题是是否有可能在Python中执行此操作?如果是这样,是否可以在不复制字符串的情况下进行操作?
-
字符串是 不可变的 ,这意味着您不能
更改str
对象。您当然可以构造一个新字符串,它是对旧字符串的一些修改。但是您因此不能s
在代码中更改对象。解决方法可能是 使用容器 :
class Container: def __init__(self,data): self.data = data
然后
popstring
给容器一个容器,检查容器,然后在容器中放入其他东西:def popstring(container): container.data = container.data[:-1] s1 = Container('abcd') popstring(s1)
再说一遍:您没有更改字符串对象本身,只是将新字符串放入了容器中。
您无法在Python中
通过引用
执行 调用
,因此无法调用函数:foo(x)
然后更改变量
x
:x
复制了的引用,因此您不能更改变量x
本身。