Python 带滤波函数的lambda表达式;var类型的问题 (太长了,读不下去了,最后两段为TL;DR版本)
我对filter命令和lambda函数有问题: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)
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
wrtx
将被提升。注意,'a'是str
求值为False
,1是int
求值为False
。改用type('a')==str
。。。。