不能循环多次 - for 循环 (python)

can't loop more than once - for loop (python)

这里的任务是:

一个。 match_ends 给定一个字符串列表,return 的计数 字符串长度为 2 或更多且第一个的字符串 和字符串的最后一个字符是相同的。 注意:python 没有 ++ 运算符,但 += 有效。

def match_ends(words):
    for i in words:
        if (len(i) >= 2) & (i[0] == i[-1]):
            return [i]


print(match_ends(['aba', 'xyz', 'aa', 'x', 'bbb']))

输出为:

['aba']

if (len(i) >= 2) & (i[0] == i[-1]):
     return [i]

你 return 当你的 if 条件为真时,这将停止你的功能。

如果你想得到它的所有出现,你应该将你的数据保存在一个变量中 res.append(i)(将 i 保存在列表 res 中)

然后 return 当你遍历所有列表时它在外面。

def match_ends(words):
    for i in words:
        if (len(i) >= 2) & (i[0] == i[-1]):
            res.append(i)
    return res

发生这种情况是因为您的第一个项目与您的 if 条件匹配,并且当您使用 return 时,您的代码将以结果作为第一个项目退出。我不确定你想用这个功能做什么。

问题是 return 是第一个,但没有继续

return 关键字停止函数,所以你必须将它存储在数组中,类似于 return it

这里是优化后的代码:

def match_ends(*words):
    result = []
    for i in list(words):
        if len(i) >= 2 and i[0] == i[-1]:
            result.append([i])
    return result


print(match_ends('aba', 'xyz', 'aa', 'x', 'bbb'))