修改Python列表的每个元素,并将结果组合成一个字符串

2024-05-19 02:11:58 发布

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

假设有一个类型为“dog”的对象列表,每个dog都有一个参数“name”。例如:

dogs = [dog1, dog2, dog3]  

是一个由三只狗组成的名单,它们的名字分别是洛奇、点点和黛西。你知道吗

我正在尝试访问每只狗的“name”,并生成一个字符串,如“Rocky,Spot,Daisy”。我知道我需要使用列表理解,但是细节比我想象的要复杂。你知道吗

我试过用

result = (dog.name+", " for dog in dogs)  

但是结果变成了生成器而不是字符串。你知道吗

我也试过了

result = ",".join(layers.name) 

但是我没有找到一种方法来访问每只狗的“名字”字段。你知道吗

我知道如何使用暴力解决问题,但我真的想实现一个优雅的“python”解决方案。 任何帮助都将不胜感激!你知道吗


Tags: 对象字符串name类型列表参数result名字
3条回答

必须将生成器与join组合:

result = ', '.join(dog.name for dog in dogs)  

这是:

result = (dog.name+", " for dog in dogs)

生成器理解/表达式不是列表理解。你可以这样使用:

>>> dogs = ['Rocky', 'Spot', 'Daisy']
>>> result = (dog for dog in dogs)
>>> for dog in result:
...     print(dog)
...
Rocky
Spot
Daisy

或针对您的具体情况:

>>> result = (dog for dog in dogs)
>>> ', '.join(result)
'Rocky, Spot, Daisy'

你可以把发电机插上插头。你知道吗

>>> ", ".join(dog.name for dog in dogs)
'Rocky, Spot, Daisy'

相关问题 更多 >

    热门问题