尝试筛选特定单词

2024-05-20 12:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我两天前开始学习python,我被困住了

我有一张50种随机颜色的单子

f = ['black', 'red', 'blue', 'red', 'black', 'red', 'white', 'white', 'orange', 'black', 'orange', 'black', 'red', 'green', 'yellow', 'blue', 'blue', 'purple', 'white', 'yellow', 'green', 'black', 'orange', 'white', 'black', 'blue', 'blue', 'blue', 'orange', 'yellow', 'yellow', 'blue', 'red', 'white', 'yellow', 'blue', 'red', 'yellow', 'yellow', 'white', 'white', 'black', 'purple', 'red', 'orange', 'orange', 'blue', 'orange', 'black', 'red']

我想检索列表中有多少种颜色,所以我尝试使用滤镜和透镜

当我试着过滤的时候

filter(lambda x:'red', f)

它返回完整的列表,所以当我使用len()时,它给我50。你知道吗

我的过滤器哪里出问题了?我试过浏览文件,但似乎找不到任何东西,但会继续寻找。你知道吗

有什么建议吗?你知道吗

我的任务说明是

“(非常好)使用地图上的颜色计数(使用过滤器,减少或len)的频率 每种颜色都出现在子任务3的结果中。打印结果。“

虽然计数看起来容易些


Tags: 过滤器列表len颜色greenbluered单子
3条回答

lambda函数实际上并没有做任何比较:它只是每次返回字符串'red',这总是真的,所以没有过滤掉任何项。实际上,您需要将字符串与传递到lambda的字符串进行比较,即x

filter(lambda x: x == 'red', f)

I would like to retrieve how many of one colour there is in the list,

你不必过滤,创建一个新的列表,然后找到它的长度。只需使用list.count函数,如下所示

print f.count('red')

您是否有意使用filterlambda?如果要获取项目计数,可以使用list类型的count方法:

>>> f = ['black', 'red', 'blue', 'red', 'black', 'red', 'white', 'white', 'orange', 'black', 'orange', 'black', 'red', 'green', 'yellow', 'blue', 'blue', 'purple', 'white', 'yellow', 'green', 'black', 'orange', 'white', 'black', 'blue', 'blue', 'blue', 'orange', 'yellow', 'yellow', 'blue', 'red', 'white', 'yellow', 'blue', 'red', 'yellow', 'yellow', 'white', 'white', 'black', 'purple', 'red', 'orange', 'orange', 'blue', 'orange', 'black', 'red']
>>> f.count("red")
8

相关问题 更多 >