我需要定义一个函数,其中取一个名字,它的首字母以这种格式返回
assert initials('John Smith') == 'JS'
assert initials('Jason Ralph Jacobs') == 'JRJ'
到目前为止我有这个。。。在
^{pr2}$
但当我运行它时,我一直收到这个消息
initials('John Smith')<generator object initials.<locals>.<genexpr> at 0x000000000349F620>
Tags:
像这样
返回的是生成器表达式对象,必须对其进行迭代才能生成结果。这可以通过传递给
list
来实现。在由于需要字符串而不是列表,因此可以使用
join
来迭代生成器。在之所以会这样做,是因为您实际上是在使用以下语法创建generator expression(尤其是括号):
这也没有错。如果你迭代返回的内容,你会得到你的数据。在
但是,如果您只想得到一个列表,那么请将表达式更改为:
^{pr2}$按原样运行代码并迭代得到的结果:
现在,考虑到您可能希望将其作为字符串返回,那么您可能需要在函数中执行以下操作:
如果要使用列表:
或者使用生成器表达式,同样的事情:
输出将是:
当你说,
initials = (letter [0].upper() for letter in names)
它的计算结果是一个迭代器,它最终将产生所有的首字母。要用它们显式地生成一个字符串,请使用''.join(letter[0].upper() for letter in names)
。在相关问题 更多 >
编程相关推荐