给定以下集合:
s = {"brown", "blue", "Blue", "green", "red", "black"}
如何使用 Python 字符串方法从中提取子集?
例如,以下应用于一个字符串,如果它们可以应用于整个集合,将提取不同的子集:
"brown".startswith("b")
"Blue".lower().startswith("b")
"e" in "green"
我有独特的无序列表,即集合,并且想知道是否可以在 Python 集合上整齐地执行这种操作,这样我就可以避免编写列表推导式。
最佳答案
您可能正在寻找这样的集合理解:
subset = {sub for sub in s if sub.startswith('b')}
这也可以使用filter
和operator.methodcaller
来完成
from operator import methodcaller as call
subset = set(filter(call('startswith', 'b'), s))
如果易读性不是一个选项,您可以使用设置解包:{*iterable}
因此方法可能如下所示:
def findall(s, find, meth = 'startswith')
return {*filter(call(meth, find), s)}
findall(s, 'b')
#{'blue', 'brown', 'black'}
关于python - 基于字符串方法的Python集合的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830665/