Python字符串过滤器

16 浏览
0 Comments

Python字符串过滤器

我正在尝试解决下面列出的课堂作业:

使用lambda表达式和filter()函数来从一个列表中过滤掉不以字母's'开头的单词。例如:

seq = ['soup','dog','salad','cat','great']

应该过滤成:

['soup','salad'] 

我写了以下两组代码...

seq = ['soup', 'dog','salad', 'cat', 'great']
result = filter (lambda test: test[0] == "s",seq)
print (result)
seq = ['soup', 'dog','salad', 'cat', 'great']
def checkf (input):
    if input[0]=='s':
            a = "TRUE"
    return(a)
test = seq[0]
result = filter (checkf(test),seq)
print (result)

两组代码都给出了一个奇怪的答案

filter object at 0x112aa06d8

就好像它返回一个十六进制的内存地址...

出了什么问题?

0
0 Comments

在Python 3中,过滤器对象(filter objects)是迭代器(iterators)。要打印出过滤器对象的内容,需要先将其转化为序列(sequence),可以尝试使用print( list(result))来实现。此外,还可以参考在Python 3中如何使用filter、map和reduce这篇文章。

在Python 3中,filter函数返回的是一个过滤器对象,而不是一个列表。过滤器对象可以按需生成过滤后的结果,这在处理大量数据时非常高效。然而,如果我们想直接打印出过滤器对象的内容,就需要将其转化为序列。

解决方法是使用list()函数将过滤器对象转化为列表。这样就可以将过滤器对象的内容一次性地打印出来。具体的代码如下:

print(list(result))

这样就可以将过滤器对象result的内容打印出来了。

另外,如果想了解更多关于在Python 3中如何使用filter、map和reduce的信息,可以参考这篇文章

0
0 Comments

Python中的字符串过滤问题通常可以通过使用lambda表达式和filter函数来解决。在使用这两个函数时,需要明确指定代码的结果将是一个列表。

下面是一个示例代码:

seq = ['soup', 'dog','salad', 'cat', 'great']
list(filter(lambda test: test[0] == "s", seq))

或者可以将结果赋值给一个变量,并打印出来:

seq = ['soup', 'dog','salad', 'cat', 'great']
result = list(filter(lambda test: test[0] == "s", seq))
print(result)

这两段代码的结果将会是:

['soup', 'salad']

在这个问题中,lambda表达式被用来定义一个匿名函数,函数的参数是列表中的每个元素,函数的返回值是判断该元素是否以字母"s"开头。filter函数根据lambda表达式的返回值来过滤列表的元素,最终返回符合条件的元素组成的列表。

通过将lambda表达式和filter函数结合使用,可以实现对字符串列表的过滤操作,只保留以特定字母开头的字符串。

0
0 Comments

Python中的字符串过滤是一种常见的操作,可以根据特定的条件筛选出符合要求的字符串。在上述代码中,我们使用了filter函数和lambda函数来实现字符串过滤。

出现问题的原因是在使用filter函数时,lambda函数的参数命名为test,但实际上应该使用input参数。因此,在函数check中,将lambda函数的参数改为input后,即可解决这个问题。

以下是修改后的代码:

seq = ['soup', 'dog','salad', 'cat', 'great']
def check(input):
    result = list(filter(lambda test: test[0] == "s", input))
    return result
check(seq)

输出结果为:['soup', 'salad']

通过对代码的修改,我们成功解决了Python字符串过滤中遇到的问题。

0