|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qin_yin 于 2020-11-1 22:31 编辑
第9行把列表转换成字符,然后返回为什么,输出的时候还是列表,并且列表也没有发生修改,
class Nstr(str):
def __sub__(self, other):
remove_list = list(self)
str_list = remove_list[:]
for i in remove_list:
if i == other:
remove_list.remove(i)
class_ob = str(str_list)
return class_ob
a = Nstr('I love fishciiiiiiiii')
b = Nstr('i')
s = a - b
print(s)
同样的问题第7行删除列表元素,最后输出还是原来的列表
class Nstr(str):
def __sub__(self, other):
remove_list = list(self)
str_list = remove_list[:]
for i in remove_list:
if i == other:
remove_list.remove(i)
class_ob = str(str_list)
return class_ob
a = Nstr('I love fishciiiiiiiii')
b = Nstr('i')
s = a - b
print(s)
你 for 循环 remove_list ,所以 for 循环里移除的应该是 str_list列表而不是 remove_list
而且你最后返回对列表使用 str() 当然只是将列表转为字符串而已,举个小荔枝:
- >>> a = [1,2,3]
- >>> str(a)
- '[1,2,3]' # 这个就是字符串
复制代码
- class Nstr(str):
- def __sub__(self, other):
- remove_list = list(self)
- str_list = remove_list[:]
- for i in remove_list:
- if i == other:
- str_list.remove(i)
- class_ob = ''.join(str_list)
- return class_ob
- a = Nstr('I love fishciiiiiiiii')
- b = Nstr('i')
- s = a - b
- print(s)
复制代码
输出结果:
这里应用 join 函数可以将列表中的字符串全部拼接起来
|
|