如果我有一个字符串
String = 'ABCEEFGH'
如何在不退出索引的情况下查看每个字母旁边的字母?
for index in range(len(String)):
if String[index] == String[index+1]:
print('Double')
答案 0 :(得分:4)
您可以使用enumerate,slicing字符串直到最后一个字符:
String = 'ABCEEFGH'
for ind,ch in enumerate(String[:-1]):
if ch == String[ind+1]:
print('Double')
在您自己的代码中,逻辑将是相同的len(String)-1
,但枚举是要走的路:
for index in range(len(String)-1):
if String[index] == String[index+1]:
print('Double')
您看到的事实只是想检查两个相邻的字符是否相同,可能使用any是最好的:
String = 'ABCEEFGH'
if any( ch == String[ind+1] for ind, ch in enumerate(String[:-1])):
print('Double',ch)
any
会在条件为True
时短路并中断循环,否则如果我们没有匹配则评估为False
。
答案 1 :(得分:1)
如果您考虑与之前的字母而不是下一个字母进行比较,这些问题几乎总是更容易。记住你已经看过的字母要比向前看更容易。
text = 'ABCEEFGH'
prev = ''
for letter in text:
if letter == prev:
print("letter duplicated:", letter)
prev = letter
答案 2 :(得分:0)
您可以使用正则表达式:
for match in re.findall(r'([a-z])\1', your_string):
print('Double letters found here.')
答案 3 :(得分:0)
>>> text = 'ABCEEFGH'
>>> for c1, c2 in zip(text, text[1:]):
if c1 == c2:
print 'double'
double