我有两个列表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中实现它?
答案 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']