2011-10-13 41 views

回答

2

列表理解给出在右边有两个相同字母的字母。我们只是把结果列表的长度:

s = "evening" 
ans = len([x for x in xrange(len(s)-2) if s[x] == s[x+2]]) 
print ans 
+0

谢谢这正是我试图想的! – Slowbro

+0

@MikePennington。我看着你对PyNEwbies的评论。在s =“eveeeninnnong”的情况下输出5的问题是什么?据我所知,这是正确的。 – oadams

0

我很想看到有人比我更专家把它变成一个LC,但我的基本sollution将

zz='evening' 
for numb, letter in enumerate(zz): 
if numb+2==len(zz): 
    break 
if letter==zz[numb+2]: 
    count+=1 

看到小李的答案,想着它这个怎么样,如果输入的是一个清单

foo = ['e', 'v', 'e', 'n', 'i', 'n', 'g'] 
new=[item for numb, item in enumerate(foo[0:-2]) if item==foo[numb+2]] 
answer=len(new) 

我傻,我也可以用一个字符串的工作好了后,我觉得这仍然清洁

testString='evening' 
new=[letter for numb, letter in enumerate(testString[0:-2]) if letter==testString[numb+2]] 
ans=len(new) 
1
s='evening' 
print len([x for x,y in zip(s, s[2:]) if x==y]) 

输出:

2 
+0

不错。十分优雅。 – oadams

相关问题