仅过滤字符串

时间:2017-11-01 08:57:36

标签: python string python-3.x filter

a = ["az", "1", "afasf7af", "8", "dsgsdgsg"]
[k for k in a if k.isalpha()]
> ['az', 'dsgsdgsg']

我觉得将isalpha作为谓词传递给filter(更明确的意图)会更加简洁。但是,似乎没有这样的自由功能。这可以在不引入混乱的lambda的情况下实现吗?

filter(isalpha, a)

1 个答案:

答案 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']