我有从包依赖列表中天真收集的数据.
取决于:foo bar baz> = 5.2
我结束了
d = set(['foo','bar','baz','>=','5.2'])
Run Code Online (Sandbox Code Playgroud)
我不想要数字和操作数.
在Perl我会的
@new = grep {/^[a-z]+$/} @old
Run Code Online (Sandbox Code Playgroud)
但我找不到一种方法来传递remove()一个lambda,或者其他东西.
我最接近的是丑陋的:
[ item != None for item in [ re.search("^[a-zA-Z]+$",atom) for atom in d] ]
Run Code Online (Sandbox Code Playgroud)
它让我得到了我想要的集合中的值的地图... 如果集合的顺序是可重复的?我知道在Perl哈希中并非如此.
我知道如何迭代.:)我正在努力做pythonesque正确的方式
Tri*_*ych 23
这里不需要正则表达式.使用str.isalpha.有和没有列表理解:
my_list = ['foo','bar','baz','>=','5.2']
# With
only_words = [token for token in my_list if token.isalpha()]
# Without
only_words = filter(str.isalpha, my_list)
Run Code Online (Sandbox Code Playgroud)
我个人认为你不必对Python中的所有东西使用列表理解,但是当我建议map或filter回答时,我总是皱着眉头.