获取以特定字母开头的姓氏

Get the last names that start with a specific letter

authors = ['Audre Lorde', 'William Carlos', 'Gabriela Mistral', 'Jean Toomer', 'An Qi', 'Walt Whitman', 'Shel Silverstein', 'Carmen Boullosa', 'Kamala Suraiyya', 'Langston Hughes', 'Adrienne Rich', 'Nikki Giovanni']

在此列表中,我想获取 Python 中姓氏以(假设为 'S')开头的名字。 我怎么做?老实说,我不知道从哪里开始,因为我还是个初学者,我试过 join 和 split,但他们只带来了姓氏本身。

供您学习。

有问题的列表格式不正确。

让我们假设它的格式正确。下面是一个简单的例子。

authors = ['Audre Lorde', 'William Carlos', 'Gabriela Mistral', 'Jean Toomer']

newlist = [x for x in authors if x.split(" ")[1].startswith('C')]

匹配名字可能会很困难,因为您可以有多个名字和姓氏,请参阅此页面以获得更好的阅读体验 Falsehoods Programmers Believe About Names

如果你也可以单名,可以取拆分后的最后一个条目:

authors = ['Audre Lorde', 'William Carlos', 'Gabriela Mistral', 'Jean Toomer', 'Cher']

print([a for a in authors if a.split(" ")[-1].startswith('C')])

例如,如果您想检查拆分部分的数量并且不想允许单个名称:

for a in authors:
    parts = a.split(" ")
    if len(parts) > 1 and parts[1].startswith('C'):
        print(parts[1])