对进入此方法的参数类型感到困惑

2024-06-01 09:15:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力理解此代码的工作原理,我们有:

people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson',
          'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']

def split_title_and_name(person):

    return person.split()[0] + ' ' + person.split()[-1]
我们给出了一个列表,这个方法应该基本上删除“博士”和“姓氏”中间的所有东西。据我所知,split()函数不能用于列表,只能用于字符串。所以这个人一定是一根绳子。然而,我们还将[0]和[-1]添加到person,这意味着我们应该得到“person”的第一个和最后一个字符,但我们得到的是第一个单词和最后一个单词。我无法理解这个代码!你能帮我理解吗

非常感谢您的帮助,谢谢:)


Tags: 代码列表people单词person原理splitthompson
3条回答

Python的split()方法将字符串拆分为列表。可以指定分隔符,默认分隔符为任何空格。因此,在您的例子中,您没有指定任何分隔符,因此此函数将字符串person拆分为['Dr.', 'Christopher', 'Brooks'],因此[0] = 'Dr.'[-1] = 'Brooks'

split()函数的语法是:string.split(separator, maxsplit),这里两个参数都是可选的

如果不提供任何参数,分隔符的默认值为任何空格,如space, \t , \n ,等,maxspit为-1(表示所有出现的情况)

您可以在https://www.w3schools.com/python/ref_string_split.asp上了解有关split()的更多信息

split函数将字符串拆分为一个单词列表。然后我们选择第一个和最后一个单词来形成输出

>>> person = 'Dr. Christopher Brooks' 
>>> person.split()
['Dr.', 'Christopher', 'Brooks']
>>> person.split()[0]
'Dr.'
>>> person.split()[-1] 
'Brooks'

这并不是一个真正的答案,只是为了澄清在给定字符串列表的情况下如何使用该函数

people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson',
          'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']


def split_title_and_name(person: str):

    return person.split()[0] + ' ' + person.split()[-1]


# This code does not actually run (I guess this might have been what you were trying)
# result = split_title_and_name(people)

# Using a for loop to print the result of running function over each list element
print('== With loop')
for person in people:
    result = split_title_and_name(person)
    print(result)

# Using a list comprehension to get the same results as above
print('== With list comprehension')
results = [split_title_and_name(person) for person in people]
print(results)

相关问题 更多 >