正在尝试在Python(flask)中筛选列表并分配给会话变量。。。打字错误

正在尝试在Python(flask)中筛选列表并分配给会话变量。。。打字错误,python,flask,filter,session-variables,Python,Flask,Filter,Session Variables,这真让我困惑。(我的“realfiles”函数只是确保目录列表不包含任何Thumbs.db或.DS_存储文件,即使我将其降低为“return True”,我也会收到相同的错误。) 我不想序列化一个过滤器,不管这意味着什么。我正在序列化过滤器输出的列表。正当Python不是我最好的语言,所以我最初认为我的错误是试图将过滤器的输出分配给同一行中的会话变量——这在Javascript中可以很好地工作- TypeError: Object of type 'filter' is not JSON ser

这真让我困惑。(我的“realfiles”函数只是确保目录列表不包含任何Thumbs.db或.DS_存储文件,即使我将其降低为“return True”,我也会收到相同的错误。)

我不想序列化一个过滤器,不管这意味着什么。我正在序列化过滤器输出的列表。正当Python不是我最好的语言,所以我最初认为我的错误是试图将过滤器的输出分配给同一行中的会话变量——这在Javascript中可以很好地工作-

TypeError: Object of type 'filter' is not JSON serializable
所以我重写了它,将其分配给一个中间变量:

session['dir_listed_projects'] = filter( realfiles , pList )
session['dir_listed_templates'] = filter( realfiles , tList )
没有


如果我根本不使用过滤器,而是直接分配listdir的输出,那么页面将无错误地呈现——在我开始从Python 2.x升级到3.x之前,过滤器工作正常。

在Python 3中,
过滤器
返回一个过滤器对象(迭代器),而不是列表

TypeError: Object of type 'filter' is not JSON serializable

在Python3中,
filter
返回一个filter对象(迭代器),而不是列表

TypeError: Object of type 'filter' is not JSON serializable

在python3中,filter不返回列表,而是返回filter对象。将其转换为列表并存储在会话中。在python3中,筛选器不返回列表,而是返回筛选器对象。将其转换为列表并存储在会话中。出于好奇,我为什么要使用筛选器对象而不是筛选列表?抱歉,让我再次尝试该注释:筛选器对象类似于生成器,因此,如果您以后想对其进行迭代,则效率更高。例如,请参见python2中range和xrange之间的差异。出于好奇,为什么我希望使用filter对象而不是filtered list?抱歉,让我再次尝试该注释:filter对象就像一个生成器,因此如果您希望稍后对其进行迭代,则效率会更高。例如,请参见python2中range和xrange之间的差异。
filter(lambda x: x == 2, [1, 2, 3])
<filter object at 0x7f37049af210>
list(filter(lambda x: x == 2, [1, 2, 3]))
[2]