Python 带滤波函数的lambda表达式;var类型的问题 (太长了,读不下去了,最后两段为TL;DR版本)

Python 带滤波函数的lambda表达式;var类型的问题 (太长了,读不下去了,最后两段为TL;DR版本),python,lambda,filter,Python,Lambda,Filter,我对filter命令和lambda函数有问题: sample_list = ["Fri", 4, "Sat", 6, "Sun", 4, 8.50] for item in sample_list: day = filter(lambda item: item is str and sample_list.index(x) >= sample_list.index(item), sample_list) print item print type(item)

我对filter命令和lambda函数有问题:

sample_list = ["Fri", 4, "Sat", 6, "Sun", 4, 8.50]
for item in sample_list:
    day = filter(lambda item: item is str and sample_list.index(x) >= sample_list.index(item), sample_list)
    print item
    print type(item)
    hours = filter(lambda x: x is int and sample_list.index(x) >= sample_list.index(item) + 1, sample_list)
    print day, hours
(如果有点长,很抱歉)

例如,即使lambda表达式中的“item is str”条件的计算结果为false,也会导致返回[],但输出读取到item类型为str。 以下是示例输出:

Fri
(type 'str')
[] []
4
(type 'int')
[] []
Sat
(type 'str')
[] []
6
(type 'int')
而我希望输出读取类似

星期五4
周六6点

我只是不明白为什么lambda表达式对于“item is str”或“item is int”的计算结果似乎为False

作为记录,我知道print语句应该有括号,我只是在使用一个用于Python的web浏览器学习工具,我假设它运行的是旧版本。当我使用3.4.3版本时,输出会返回类似的结果(我没有实际的输出,它是这样的)。我已经找到了那个具体问题的解决方案,但我不能完全理解


归根结底,我认为lambda表达式存在混淆变量类型的问题。如果你能提供建议,我将不胜感激。另外,我对Python有点陌生,所以如果你能用外行术语来帮助我更好地理解它。

你的类型检查应该是
isinstance(item,str)
isinstance(item,int)
。此外,您的第一个过滤器似乎混淆了什么是
x
和什么是
;我希望出现
namererror
wrt
x
将被提升。

注意,
'a'是str
求值为
False
1是int
求值为
False
。改用
type('a')==str
。。。。