我已经编写了这段代码来删除字符串中的字符。我使用了过滤器功能,但是它返回了相同的列表而没有修改。
a = "Hello !!!!, . / "
a1 = list(a)
def it(at):
k = at.copy()
charlist = [",", ".", "/", " ", ":", ";", "\'", "\"", "!"]
for x in charlist:
filter(lambda t: t != x, k)
print(k)
it(a1)
答案 0 :(得分:3)
filter
返回过滤的可迭代对象;它不会修改它。
>>> def it(at):
... charlist = [",", ".", "/", " ", ":", ";", "\'", "\"", "!"]
... print(list(filter(lambda t: t not in charlist, at)))
...
>>> it(a1)
['H', 'e', 'l', 'l', 'o']
一种更接近原始代码的实现方式是按照您的操作方式进行循环过滤,但是每次都重新分配k
:
>>> def it(at):
... k = at.copy()
... charlist = [",", ".", "/", " ", ":", ";", "\'", "\"", "!"]
... for x in charlist:
... k = list(filter(lambda t: t != x, k))
... print(k)
...
>>> it(a1)
['H', 'e', 'l', 'l', 'o']
答案 1 :(得分:0)
Filter方法返回已被过滤的迭代器。 请参考下面的代码
a = "Hello !!!!, . / "
a1 = list(a)
def it(at):
k = at.copy()
charlist = [",", ".", "/", " ", ":", ";", "\'", "\"", "!"]
new_k = None
for x in charlist:
new_k = filter(lambda t: t != x, k)
for s in new_k:
print(s)
it(a1)