a = ["az", "1", "afasf7af", "8", "dsgsdgsg"]
[k for k in a if k.isalpha()]
> ['az', 'dsgsdgsg']
我觉得将isalpha
作为谓词传递给filter
(更明确的意图)会更加简洁。但是,似乎没有这样的自由功能。这可以在不引入混乱的lambda的情况下实现吗?
filter(isalpha, a)
答案 0 :(得分:1)
您可以使用str.isalpha
未绑定:
filter(str.isalpha, a)
这是有效的,因为未绑定的方法仍然可以使用与第一个参数相同类型的对象。这会反复调用str.isalpha(string_value)
:
>>> str.isalpha('az')
True
>>> str.isalpha('1')
False
演示:
>>> a = ["az", "1", "afasf7af", "8", "dsgsdgsg"]
>>> list(filter(str.isalpha, a))
['az', 'dsgsdgsg']