关于如何在字符串中查找重复的第一个字母

时间:2020-04-25 18:59:26

标签: python

编写一个Python函数,该函数获取字符串列表并存储字符串,单词中第一个字母再次出现的单词(例如,“狒狒”)。该程序应显示结果列表。

  1. 函数名称:charRepFirst()
  2. 参数:list
  3. 返回:list
    • 例如输入列表:['tom', 'Baboon', 'Book', 'bob']

预期输出:

['Baboon', 'Bob']

因此,由于书只有一个B而没有像bob的两个,因为字母b不会第二次重复,因此不会被计算在内,因此也不会添加到列表中。

4 个答案:

答案 0 :(得分:1)

output = filter(lambda s: s[0].lower() in s[1:].lower(), list)

此处的lambda函数检查转换为小写的字符串(s[0])的第一个字符是否出现在转换为小写的字符串(s[1:])的其余字符中,并且应用filter函数将此条件添加到列表中的每个元素,并仅返回满足条件的元素。

加力燃烧器的解决方案是一种更加Python化的方法,即使它稍微不透明些。

答案 1 :(得分:1)

您可能想熟悉如何提出问题。通常建议您添加代码并解释您所面临的问题,以便其他人可以复制它并提供更多帮助。

关于您的实际解决方案,我倾向于为您提供答案,因为它很简单,可以理解您的要求。

以下列表理解似乎可以满足您的要求。

def charRepFirst(input_list):
    return [word for word in input_list if word[0].lower() in word[1:].lower()]

答案 2 :(得分:0)

比上面提供的代码示例更为详细的示例:

def charRepFirst(words):
    ans = []

    for word in words:
        # Translate the word to lowercase
        word_lowercase = word.lower()
        # If `word_lowercase` contains more than one `word_lowercase[0]`
        if word_lowercase.count(word_lowercase[0]) > 1:
            ans.append(word)

    return ans

答案 3 :(得分:0)

正则表达式解决方案

代码

IServiceProvider

说明

使用正则表达式进行列表理解以过滤出感兴趣的单词

正则表达式:r'^(\ w)。*?\ 1'

import re

def charRepFirst(words):
    return [word for word in lst if re.match(r'^(\w).*?\1', word, re.I)]

re.I-不区分大小写的匹配

相关问题