我们假设有一个类型为" 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"解决方案。 任何帮助都会很感激!
答案 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] )