首页 > 解决方案 > 测试偶数字母,为什么我的函数内外的索引不同?

问题描述

功能:

def func(word):
    out=[]
    for i in word:
        if i in word[0::2]:
            out.append(i.upper())
    return out

如果我跑

func('This is a string')

这将返回:

['T','I','S', ' ', 'I','S', ' ','A', ' ','S','R','I','N']

这是我在测试从位置 0 开始的第二个字母时所期望的。

然而

mystring = 'This is a string'
mystring[0::2]

将返回

'Ti sasrn'

请注意,该函数不是我的生产代码,而是我发现并简化的一个兴趣点。

标签: pythonfunctionindexing

解决方案


for i in word:
      if i in word[0::2]:
           out.append(i.upper())

此代码遍历字符,如果某个字符出现在偶数位置,则将其添加到out列表中(即使正在评估的字符位于奇数位置)。

func('abb')将 yield [a, b, b],因为当第二个b被评估时,函数会询问“字母是否b出现在我的字符串中的偶数位置?”,因为答案是肯定的,所以它被附加到输出中。


推荐阅读