我有六个单词的列表:
words = ['alone', 'algae', 'caper', 'plane', 'flyer', 'tooth']
,我想检查一个单词中的字母是否在其他任何单词的相同位置。例如,“ a”是单独的第一个字母,而在藻类中是第一个字母,因此将是一个匹配项。但是,“ e”是飞机上的第五个字母,而传单中的第四个字母,因此不会匹配。然后,我想统计一下我总共有多少场比赛。
是否有比遍历每个单词中的每个字母并检查该字母是否在另一个单词中的相同位置更好的方法呢?我目前有以下代码:
match_cnt = 0
for i in words:
for index, j in enumerate(i):
for k in range(len(words)):
if j == words[i][index]:
match_cnt += 1
答案 0 :(得分:2)
如果您的单词长度相同,则可以使用zip。我没有索引的一线解决方案:
match_cnt = sum(sum(1 for x in e if e.count(x)>1)for e in zip(*words))
它将计算在同一索引中最少出现两次的所有字符。