我有两个带名字的列表,我想将第一个名称与另一个列表的所有名称进行比较,看看有多少字母相似,但我这样做有困难。这是我到目前为止的代码:
listss = ['SAM SMITH', 'JAKE BLAK', 'CONNOR ELLY']
lists2 = ['BEN SMITH']
matching = []
for name in lists2:
for ch in name:
for names in listss:
for chs in names:
if chs == ch:
matching.append(ch)
print(matching)
我想将'BEN SMITH'与listss中的每个名称进行比较,看看有多少个字母彼此相等。因此,一个例子是将'BEN SMITH'与'SAM SMITH'进行比较,结果将是5个共同的字母,它们是'SMITH',前三个字母不相等。有没有办法做到这一点?我一直试图用for循环但是没有运气。
答案 0 :(得分:0)
您可以使用for
循环
lists1 = ['SAM SMITH', 'JAKE BLAK', 'CONNOR ELLY']
lists2 = ['BEN SMITH']
for name2 in lists2:
for name1 in lists1:
matching = []
for ch2 in name2:
for ch1 in name1:
if ch1 == ch2 and ch1 != ' ' and ch1 not in matching:
matching.append(ch1)
print(len(matching), matching)
# 5 ['S', 'M', 'I', 'T', 'H']
# 2 ['B', 'E']
# 2 ['E', 'N']
或者您可以使用set()
lists1 = ['SAM SMITH', 'JAKE BLAK', 'CONNOR ELLY']
lists2 = ['BEN SMITH']
for name2 in lists2:
for name1 in lists1:
matching = (set(name1) & set(name2)) - set(' ')
print(len(matching), matching)
# 5 {'T', 'I', 'S', 'M', 'H'}
# 2 {'B', 'E'}
# 2 {'N', 'E'}