编写一个Python函数,该函数获取字符串列表并存储字符串,单词中第一个字母再次出现的单词(例如,“狒狒”)。该程序应显示结果列表。
charRepFirst()
list
list
['tom', 'Baboon', 'Book', 'bob']
预期输出:
['Baboon', 'Bob']
因此,由于书只有一个B而没有像bob的两个,因为字母b不会第二次重复,因此不会被计算在内,因此也不会添加到列表中。
答案 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-不区分大小写的匹配