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

时间:2015-12-01 22:13:24

标签: python list-comprehension

我们假设有一个类型为" dog"的对象列表,每只狗都有一个参数" name"。例如:

dogs = [dog1, dog2, dog3]  

是一个由三只狗组成的名单,名称为Rocky,Spot和Daisy。

我正在尝试访问" name"每只狗都会生成一个像Rocky,Spot,Daisy"这样的字符串。我知道我需要使用List Comprehensions,但具体结果比我想象的要复杂。

我尝试使用

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

但是结果变成了生成器而不是字符串。

我也试过

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

但是我找不到一种方法来访问"名称"每只狗的领域。

我知道如何使用蛮力解决问题,但我真的想要实现一个优雅的,#34; python"解决方案。 任何帮助都会很感激!

4 个答案:

答案 0 :(得分:7)

您必须将生成器与join

组合在一起
result = ', '.join(dog.name for dog in dogs)  

答案 1 :(得分:3)

您可以将生成器插入连接。

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

答案 2 :(得分:1)

此:

git push

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

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

答案 3 :(得分:1)

如果您将列表理解与", ".join结合使用,则会得到:

result = ", ".join( [dog.name for dog in dogs] )