qin_yin 发表于 2020-11-1 22:11:20

列表的小问题

本帖最后由 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)

wp231957 发表于 2020-11-1 22:27:55

发代码,莫要只发图片

qin_yin 发表于 2020-11-1 22:31:38

wp231957 发表于 2020-11-1 22:27
发代码,莫要只发图片

好吧

Twilight6 发表于 2020-11-1 23:26:55



你 for 循环 remove_list ,所以 for 循环里移除的应该是 str_list列表而不是 remove_list

而且你最后返回对列表使用 str() 当然只是将列表转为字符串而已,举个小荔枝:

>>> a =
>>> str(a)
''   # 这个就是字符串


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)

输出结果:
I love fshc

这里应用 join 函数可以将列表中的字符串全部拼接起来

页: [1]
查看完整版本: 列表的小问题