我们说我有以下列表
List = ['Apple', 'Banana', 'Orange', 'Grapes']
从此我想搜索Apple
我必须使用以下代码
if 'Apple' in List:
print "Found"
但我想搜索包含'App'
的字符串我该怎么办?
我可以使用For
循环和if
语句组合。
for items in List:
if 'App' in items:
print "Found"
但还有其他方法可以做这个过程吗?
答案 0 :(得分:2)
您可以使用map
+ any
:
lst = ['apple', 'banana']
if any(map(lambda x: 'app' in x.lower(), lst)):
print "Found"
稍微多一点pythonic:
lst = ['apple', 'banana']
if any(['app' in x.lower() for x in lst]):
print "Found"
使用生成器的稍微优化的版本(如果第一个元素是" apple",它不会检查lst的其余部分):
generator = ('app' in x.lower() for x in lst)
if any(generator):
print "Found"
答案 1 :(得分:0)
if(True in ["app" in k for k in ["apple","orange","grapes"]]):
print("woot")
或多或少可读但做同样的事情。
你甚至可以把它变成一个班轮,
print "woot" if(True in ["app" in k for k in ["apple","orange","grapes"]]) else ""
答案 2 :(得分:0)
如果您只是想要更简洁的东西,可以用comprehension(在这种情况下,generator expression)写出完全相同的逻辑
和any
功能:
if any('App' in item for item in List):
print "Found"
如果不明显为什么这与现有代码几乎完全相同:
如果将理解扩展为显式for
语句,它看起来像这样:
for item in List:
yield 'App' in item
然后,any
函数迭代每个得到yield
的东西,直到其中一个为真,或者直到它结束并且它们都是假的。
所以,唯一的区别是,每次找到某些东西时,不是打印"Found"
,而是只打印一次,然后停止查看。
如果您想要更多效率,您需要更改数据结构。但是,当你在List
中只有4件事时,我怀疑这是一个问题。