当前位置: 首页 > 面试题库 >

Python函数修改字符串

养焱
2023-03-14
问题内容

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

是否可以在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)

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



 类似资料:
  • 我有一个String,newNumber=106,nn=3和差异=3。 输出: 我想修改这个字符串,使输出变成,然后用这个新字符串我想再次修改它,使它变成,基本上我只需要替换新的数字,它是106,并且一直变为11,正如你所看到的,我试图只修改newNumber并用另一个替换它,同时保持整个字符串不变,我只是替换并添加它,这是如何实现的?输出应该是这样的,输出: 我在用步骤求解一个方程,公式无关紧要

  • 修改字符串 到目前为止,我们简单地搜索了一个静态字符串。正则表达式通常也用不同的方式,通过下面的 RegexObject 方法,来修改字符串。 方法/属性 作用 split() 将字符串在 RE 匹配的地方分片并生成一个列表, sub() 找到 RE 匹配的所有子串,并将其用一个不同的字符串替换 subn() 与 sub() 相同,但返回新的字符串和替换次数

  • 当然,有时候你也想修改其中一个参数值。修改参数值的函数称为修改函数。 举个修改函数的例子:考虑这样一个函数increment,它给一个Time对象加上一定的秒数。此函数的草案代码如下: void increment (Time& time, double secs) { time.second += secs; if (time.second >= 60.0) {

  • 本文向大家介绍C++ 修改字符串文字,包括了C++ 修改字符串文字的使用技巧和注意事项,需要的朋友参考一下 示例 C ++ 11 "hello world" 是字符串文字,因此对其进行修改会产生未定义的行为。 str上面示例中的初始化在C ++ 03中已正式弃用(计划从该标准的将来版本中删除)。2003年之前,许多编译器可能对此发出警告(例如,可疑转换)。2003年之后,编译器通常会警告不要使用转

  • 默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设置步骤如下: 在菜单栏选择 Window -> Preferences -> General -> Workspace -> Text file encoding,在 Text file encoding 中点击 Other,选择 UTF-8

  • 本文向大家介绍Python中字符串的修改及传参详解,包括了Python中字符串的修改及传参详解的使用技巧和注意事项,需要的朋友参考一下 发现问题 最近在面试的时候遇到一个题目,选择用JavaScript或者Python实现字符串反转,我选择了Python,然后写出了代码(错误的): 然后面试官问了两个问题: (1)可以这样修改字符串的值吗?【我回答的,可以】【回答错误】 (2)传入的参数是地址?还