如何打印句子中每个单词的第一个字母?

时间:2014-03-30 23:16:26

标签: python

我上周在一个测验中得到了这个问题,很多人都错了,所以我很确定它会在我们的期中:

  

编写一个函数,该函数将字符串列表作为参数   返回包含每个字符串的第一个字母的列表。   也就是说,如果输入参数是[“Daniel”,“Nashyl”,“Orla”,   “Simone”,“Zakaria”],你的函数应该返回['D','N','O','S',   'Z']。您提交的文件应包含main()函数   证明你的功能有效。

我知道您可以使用此[#:#]打印单词或句子的任何字母。

>>> `x = "Java, Python, Ruby"`
>>> `x[:13]`
'Java, Python,'
>>> `x[:-1]`
'Java, Python, Rub'
>>> `x[:1]`
'J'

但是在打印一堆单词的第一个字母时,我感到很困惑。我也认为这里需要“.split”功能。我正在使用python 3.3.3

3 个答案:

答案 0 :(得分:2)

def first_letters(lst):
    return [s[:1] for s in lst]

def main():
    lst = ["Daniel","Nashyl","Orla", "Simone","Zakaria"]
    assert first_letters(lst) == ['D', 'N', 'O', 'S', 'Z']

if __name__=="__main__":
    main()

str.split接受一个字符串并将其分解为字符串列表。您的输入已经是字符串列表,因此您不需要.split。

"mystring"[:1]获取字符串的第一个字符(如果字符串为"",则为"")。将其应用于输入列表中的每个字符串,并返回结果。

答案 1 :(得分:1)

您可以使用list comprehension执行此操作。你肯定想读一读它们!这是一个最小的例子,它可以帮助您寻找:

>>> L =  ["Daniel","Nashyl","Orla", "Simone","Zakaria"]
>>> [item[0] for item in L]
['D', 'N', 'O', 'S', 'Z']

这将遍历列表中的每个名称,并从原始列表中每个项目的第一个字母创建一个新列表。例如,"Daniel"[0] == 'D'。不需要.split

答案 2 :(得分:1)

列表理解很酷,你应该学会使用它们,但是让我解释一下这里发生了什么,因为在你的问题中你说你很困惑如何用一堆字符串来做。

所以,你有一个字符串列表。列表是可迭代集合,这意味着我们可以使用例如for loop迭代它:

words = ["Daniel","Nashyl","Orla", "Simone","Zakaria"]
for word in words:
   print word[:1]

我相信你在课堂上教过这样的循环。现在,让我们构建一个包含这些字母的新列表,而不是打印第一个字母:

result = []
for word in words:
   result.append(word[:1])

在这里,我创建了一个新列表,然后对于每个单词,我append将该单词的起始字母添加到新列表中。 list comprehension执行相同的操作,语法更加模糊,更优雅,效率更高:

result = [word[:1] for word in words]

这是它的要点。