从列表中查找字符串,从另一个列表中的字符串开始

时间:2016-07-21 05:50:42

标签: python string list

我有两个列表listOne& listTwo

e.g。

listOne可以包含'about','day','school'

listTwo可以包含'a','c','da','z'

我想找出listOne中的所有元素,这些元素以listTwo中元素的字符开头。上面示例的输出是'about'和'day'

我尝试使用以下代码实现它:

for elem1 in listTwo:
    for elem2 in listOne:
        if elem2.startswith(elem1):
            result.append(elem2)

但我觉得它嵌套得太多了。有没有更优雅的方法在Python中实现它?

2 个答案:

答案 0 :(得分:1)

你做这件事的方式很好。它易于阅读/理解等等。

但是,如果您真的想要,可以使用src来缩小它:

itertools.product

答案 1 :(得分:1)

您可以将元组传递给str.startswith方法。

来自doc

  

str.startswith(前缀[,start [,end]]):如果字符串开始则返回True   使用前缀,否则返回False。前缀也可以是元组   要查找的前缀。使用可选的start,测试字符串从   那个位置。使用可选的结尾,停止比较字符串   位置。

但Python 2.5 +

支持此功能
tuple_listTwo = tuple(listTwo)

[ele for ele in listOne if ele.startswith(tuple_listTwo)]

<强>输出:

  

['day','about']