如果
,我的代码就像这样listOne = ['hello','hi','bye']
listTwo = ['goodbye','bye']
for x in range(0,len(listOne))
listOne[x] in listTwo
>>>True
但请考虑这种情况:
listOne = ['hello','hi','bye']
listTwo = ['goodbye','by']
for x in range(0,len(listOne):
listOne[x] in listTwo
>>>False
我需要找到listTwo中的字符串是否是listOne中字符串的一部分。但是,我需要让每个循环在listOne中检查每个实例上的listTwo中的所有项
谢谢!
答案 0 :(得分:3)
尝试这种方式:
listOne = ['hello','hi','bye']
listTwo = ['goodbye','by']
for x in listTwo:
if any(x in e for e in listOne):
print(x)
它将打印'by',因为'by'是listOne
中'bye'的一部分。
答案 1 :(得分:0)
listOne = ['hello','hi','bye']
listTwo = ['goodbye','by', 'bye']
for x in listOne:
for y in listTwo:
if y in x:
print(x, y, True)
else:
print(x, y, False)
输出
hello goodbye False
hello by False
hello bye False
hi goodbye False
hi by False
hi bye False
bye goodbye False
bye by True
bye bye True
答案 2 :(得分:0)
最简单的解决方法
any( x for x in listTwo if x in listOne)
答案 3 :(得分:0)
听起来你想通过部分匹配匹配字符串。
您可以使用list(string)
将字符串分解为单个字符,并根据需要对每个字符进行比较。
示例:
bye = list('bye')
goodbye = list('goodbye')
lettersMatched = 0
for x in range(len(bye)):
for y in range(len(goodbye)):
if bye[x] == goodbye[y]:
lettersMatched += 1
>>>lettersMatched
3
这允许您设置要匹配的最小字符的要求,但不要使用此代码,它仅用于概念。这也符合字谜。使用正则表达式可能会更好。例如,如果您希望将“bye”与“goodbye”匹配,则可以使用较小的单词作为模式制作正则表达式。
另一个用途是你可以使用re.match('b?y?e?')
作为模式将'bye'与'by'匹配,但由于它将每个字符视为可选项,因此它也会与'be'匹配。
希望这些想法对您有所帮助! :)
答案 4 :(得分:0)
一线解决方案:
print([item for item in listTwo for match in listOne if item in match])
输出:
['by']
详细解决方案:
for item in listTwo:
for match in listOne:
if item in match:
print(item)