如何检查数组中的任何字符串是否存在于另一个字符串中?
例如:
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:行得到适当的结果?
当前回答
如果a或str中的字符串变长,您应该小心。简单的解决方案是O(S*(A^2)),其中S是str的长度,A是A中所有字符串长度的总和。要获得更快的解决方案,请查看用于字符串匹配的Aho-Corasick算法,该算法在线性时间O(S+A)内运行。
其他回答
a = ['a', 'b', 'c']
str = "a123"
a_match = [True for match in a if match in str]
if True in a_match:
print "some of the strings found in str"
else:
print "no strings found in str"
只是关于如何在String中获得所有列表元素的更多信息
a = ['a', 'b', 'c']
str = "a123"
list(filter(lambda x: x in str, a))
data = "firstName and favoriteFood"
mandatory_fields = ['firstName', 'lastName', 'age']
# for each
for field in mandatory_fields:
if field not in data:
print("Error, missing req field {0}".format(field));
# still fine, multiple if statements
if ('firstName' not in data or
'lastName' not in data or
'age' not in data):
print("Error, missing a req field");
# not very readable, list comprehension
missing_fields = [x for x in mandatory_fields if x not in data]
if (len(missing_fields)>0):
print("Error, missing fields {0}".format(", ".join(missing_fields)));
你可以使用任何:
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。
这是set的另一个解。使用set.intersection。对于一行代码。
subset = {"some" ,"words"}
text = "some words to be searched here"
if len(subset & set(text.split())) == len(subset):
print("All values present in text")
if subset & set(text.split()):
print("Atleast one values present in text")