Python函数修改字符串

发布于 2021-01-29 18:19:31

曾经有人要求我创建一个给定字符串的函数,然后从字符串中删除一些字符。

是否可以在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中执行此操作?如果是这样,是否可以在不复制字符串的情况下进行操作?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    字符串是 不可变的 ,这意味着您不能
    更改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)
    

    然后更改变量xx复制了的引用,因此您不能更改变量x本身。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看