如果我有一个列表
word = ['cat','laap','cabb']
如何检查相邻字母是否重复?我当时在想我的位置可以转到数组的第一个索引,而j可以检查每个字母?这是正确的方法吗?
注意:我的代码中的选项卡可能是错误的,我发现标记代码上的堆栈有点奇怪。
words = ['cat','laap','cabb']
for i in range(len(words)):
for j in range(len(words)):
if(words[i][j]==word[i][j+1]):
print('dup')
答案 0 :(得分:2)
我认为您想写的东西更像
words = ['cat','laap','cabb']
for word in words:
for index, character in enumerate(word):
if word[index + 1] == character:
print('dup')
但是请注意,这在最后一个字母处失败(即使您的代码也是如此)。为避免这种情况,您可以编写
for word in words:
for index, character in enumerate(word[:-1]):
if word[index + 1] == character:
print('dup')
答案 1 :(得分:0)
也许您也可以尝试将zip
与set comprehension
结合使用:
results = {w for w in word for ch1, ch2 in zip(w, w[1:]) if ch1 == ch2}
答案 2 :(得分:0)
使用zip(word, word[1:])
创建一个单词中连续字母的2个元素元组,将其转换为set并检查其长度是否为1以检查两个元素是否相同,然后使用any
检查是否有字母对
>>> words = ['cat','laap','cabb']
>>> any(any(len(set(t))==1 for t in zip(w, w[1:])) for w in words)
True