如何检查数组中的任何字符串是否存在于另一个字符串中?
例如:
a = ['a', 'b', 'c']
s = "a123"
if a in s:
print("some of the strings found in s")
else:
print("no strings found in s")
我如何替换如果a在s:行得到适当的结果?
如何检查数组中的任何字符串是否存在于另一个字符串中?
例如:
a = ['a', 'b', 'c']
s = "a123"
if a in s:
print("some of the strings found in s")
else:
print("no strings found in s")
我如何替换如果a在s:行得到适当的结果?
当前回答
在另一个字符串列表中查找多个字符串的一种紧凑方法是使用set.intersection。这比大型集或列表中的列表理解执行得快得多。
>>> astring = ['abc','def','ghi','jkl','mno']
>>> bstring = ['def', 'jkl']
>>> a_set = set(astring) # convert list to set
>>> b_set = set(bstring)
>>> matches = a_set.intersection(b_set)
>>> matches
{'def', 'jkl'}
>>> list(matches) # if you want a list instead of a set
['def', 'jkl']
>>>
其他回答
为了提高速度,我会使用这样的函数:
def check_string(string, substring_list):
for substring in substring_list:
if substring in string:
return True
return False
只是关于如何在String中获得所有列表元素的更多信息
a = ['a', 'b', 'c']
str = "a123"
list(filter(lambda x: x in str, a))
如果你想要的只是True或False, any()是目前为止最好的方法,但如果你想知道具体匹配哪个字符串/字符串,你可以使用一些东西。
如果你想要第一个匹配(默认为False):
match = next((x for x in a if x in str), False)
如果你想获得所有匹配项(包括重复项):
matches = [x for x in a if x in str]
如果你想获得所有非重复的匹配(不考虑顺序):
matches = {x for x in a if x in str}
如果你想按正确的顺序获得所有非重复的匹配项:
matches = []
for x in a:
if x in str and x not in matches:
matches.append(x)
这取决于上下文 假设你想检查单个文字(任何单个单词a,e,w,..等)就足够了
original_word ="hackerearcth"
for 'h' in original_word:
print("YES")
如果你想检查original_word中的任何一个字符: 利用
if any(your_required in yourinput for your_required in original_word ):
如果您想要original_word中的所有输入,请使用所有输入 简单的
original_word = ['h', 'a', 'c', 'k', 'e', 'r', 'e', 'a', 'r', 't', 'h']
yourinput = str(input()).lower()
if all(requested_word in yourinput for requested_word in original_word):
print("yes")
你可以使用任何:
a_string = "A string is more than its parts!"
matches = ["more", "wholesome", "milk"]
if any([x in a_string for x in matches]):
类似地,要检查是否找到列表中的所有字符串,请使用all而不是any。