Python 3.x 如何在不使用for循环的情况下查找list的任何元素是否包含子字符串
假设我有Python 3.x 如何在不使用for循环的情况下查找list的任何元素是否包含子字符串,python-3.x,string,Python 3.x,String,假设我有 list=[“树”、“门”、“买”、“火车”、“测试”] 我的字符串如下: string=“rain” 我想使用一个规则来理解列表中的任何元素是否包含我的字符串。在这种情况下,我希望这变成现实 我知道我可以这样做: flag = False for element in list: if string in element: flag = True 然而,我想知道是否有一种方法。或者有一种方法可以在一个简单的if语句中控制它 谢谢。如果你真的讨厌字符串,con
list=[“树”、“门”、“买”、“火车”、“测试”]
我的字符串如下:
string=“rain”
我想使用一个规则来理解列表中的任何元素是否包含我的字符串。在这种情况下,我希望这变成现实
我知道我可以这样做:
flag = False
for element in list:
if string in element:
flag = True
然而,我想知道是否有一种方法。或者有一种方法可以在一个简单的if语句中控制它
谢谢。如果你真的讨厌字符串,concat是你可以实现的一种方法。其他的可以是列表理解,但这只是for循环的一个线性版本 还需要注意的是,下面的答案将需要O(N)时间,所以它不是真的更快。只是一种不同的实现方式
arr = ["tree", "gate", "buy", "train", "test"]
ans = False
ele= "rain"
if ele in "~".join(arr): ans=True
ans
生成器表达式或列表理解对您来说算是“for循环”吗?您可以编写
any(元素中的字符串对应列表中的元素)
,但基本上这只是编写相同内容的另一种方式,如果您想避免使用for
关键字,可以使用any(map(lambda元素:元素中的字符串,列表))
,另一种方法是加入列表:字符串在“|”中。加入(列表)
如果你感兴趣,试着找出哪种方法最快我只是想用一种简单的方法来写它,似乎这是最简单的方法。非常感谢。我可以问另外一件事吗:如果我有arr=[“+”、“-”、“*”、“/”]string=“一/二”作为输入,我想在输出中获得[“一”、“/”、“二”]。更清楚的是,如果字符串中出现了arr元素,那么在这种情况下,我如何找到它?查看string.split
它会执行您想要的操作。