python中的字符串搜索-两个列表

时间:2019-05-12 22:02:48

标签: python arrays full-text-search

说我有一个字符串数组A = ['abcbdefcd']和另一个字符串数组 T = ['ab','abc','def','cd','abcd']

我想编写一个可以搜索数组A的函数,如果它在A中的T中找到一个字符串,则返回true或false。

我认为我会尝试

  

对于A中的文本:如果T中的文本:打印(true)

     

其他:

     

print(false)

但这不能满足我的需求,有人可以提出其他建议吗?

3 个答案:

答案 0 :(得分:1)

这应该可以满足您的需求

A =  ['abcbdefcd']

T =  ['ab', 'abc', 'def', 'cd', 'abcd']

result = False
for text in A:
    for sub_text in T:
        if (sub_text in text):
            result = True
            break

if (result):
    print('True')
else:
    print('False')

答案 1 :(得分:1)

如果我正确理解了这个问题,那么您基本上想找到2个列表的交集。如果列表T包含列表A中也存在的元素,则返回true,否则返回false。

要做到这一点,您可以使用多种pythonic解决方案:

方法1

pattern('[regex]')->replace($bar)->callback('name');

即。尝试这样的事情。

bool(set(a) & set(b))

另一种方法是通过使用生成器表达式对列表执行迭代来完成的:

a = ['abc','bca','av']
b = ['ab','bc']
print(bool(set(a) & set(b))) # this would return true in this case

最后,您可以使用冻结集的不相交方法:

a = set(a); any(i in a for i in b)

答案 2 :(得分:1)

对于您的特定请求:

not set(a).isdisjoint(b)

输出:

a = ['abcbdefcd'] 
t = ['ab', 'abc', 'def', 'cd', 'abcd']

for text in t:
    print(text in a[0])

一些注意事项:

  1. 用小写字母命名变量
  2. 您可以使用t ='abcbdefcd'代替t = ['abcbdefcd'],代码将是True True True True False 而不是if text in t