Jos*_*ria 4 python lambda filter python-2.7 python-3.x
当我在Python 3中运行此代码时:
languages = ["HTML", "JavaScript", "Python", "Ruby"]
print( filter(lambda x: x == "Python",languages))
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
filter object at 0x7fd83ff0
filter object at 0x7feede10
Run Code Online (Sandbox Code Playgroud)
我不知道该错误意味着什么-它在Python 2.7中可以正常运行。
谁能建议解决方案?
这不是一个错误-您将一个类型为filter的对象打印为filter()不返回列表 -它构造了一个迭代器,但前提是有一个请求。
最简单的解决方案是使用该函数list()-它请求一个迭代器并返回列表:
print( list(filter(lambda x: x == "Python", languages)))
Run Code Online (Sandbox Code Playgroud)
而不是你的命令
print( filter(lambda x: x == "Python",languages))
Run Code Online (Sandbox Code Playgroud)
注意:它类似于打印range(10)(这是一个对象)和打印list(range(10))(这是列表)。
几乎所有函数之间都有变化,Python 2.x并且Python 3.x在listPython 2.x中返回了一个函数-在Python 3.x中,它们返回了一些更通用且消耗更少内存的东西,这是在感兴趣的情况下如何获取元素的诀窍。
比较:1, 2, 3, 4, 5, 6, 7, 8, 9和integers from 1 to 9(或1, 2, ..., 9)。
没有不同?尝试写下来all integers from 1 to 999999。