鱼C论坛

 找回密码
 立即注册
查看: 990|回复: 6

[已解决]一个小问题请教大佬

[复制链接]
发表于 2018-3-16 19:44:28 | 显示全部楼层 |阅读模式
5鱼币
  1. class Nstr:
  2.     def __init__(self,strs):
  3.         self.a = strs
  4.     def __sub__(self,other):
  5.         for each in self.a:
  6.             if each in other.a:
  7.                 self.a.replace(each,'')
  8.         return self.a
复制代码

  1. class Nstr:
  2.     def __init__(self,strs):
  3.         self.a = strs
  4.     def __sub__(self,other):
  5.         for each in self.a:
  6.             if each in other.a:
  7.                 self.a = self.a.replace(each,'')
  8.         return self.a
复制代码


为什么两段代码就差一个赋值的区别,而一段代码就不能实现
最佳答案
2018-3-16 19:44:29
因为str的raplace方法返回一个新的字符串,而原来的字符串不变。所以如果想改变self.a的值,需要对其重新赋值。

最佳答案

查看完整内容

因为str的raplace方法返回一个新的字符串,而原来的字符串不变。所以如果想改变self.a的值,需要对其重新赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 19:44:29 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
因为str的raplace方法返回一个新的字符串,而原来的字符串不变。所以如果想改变self.a的值,需要对其重新赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 19:53:59 | 显示全部楼层
self.a.replace(each,'')不修改self.a本身,
需要赋值出去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 20:12:01 | 显示全部楼层
self.a.replace(each,'')  # 并没有值去接收它所以他改变之后不会有任何影响
self.a = self.a.replace(each,'') # 这个就替换了self.a中你要替换的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 20:13:25 | 显示全部楼层
replace()方法语法:
str.replace(old, new[, max])     返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次.
而原有的字符串不改变,所有需要对其重新赋值。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 20:35:10 | 显示全部楼层
>>> a="abcdef asdf  a fa"
>>> a.replace('b','')
'acdef asdf  a fa'
>>> a
'abcdef asdf  a fa'
>>> b = a.replace('b', '')
>>> b
'acdef asdf  a fa'
>>> a
'abcdef asdf  a fa'


replace方法不修改变量本身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-16 21:07:06 | 显示全部楼层
懂了,谢谢各位大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 22:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表