我怎样才能找到字符串的一部分在python中的List中

时间:2015-05-11 03:45:35

标签: python

我们说我有以下列表

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"

但还有其他方法可以做这个过程吗?

3 个答案:

答案 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件事时,我怀疑这是一个问题。