使用python 2.7中的列表推导将对象值列表连接到字符串中

时间:2013-01-09 22:52:00

标签: python map list-comprehension

我有一个对象列表。在一行中,我想创建一个字符串,其中包含列表中每个对象的特定变量,以逗号分隔。

现在,我可以使用列表推导和地图的组合来实现这一目标:

','.join(map(str, [instance.public_dns_name for instance in instances]))

或使用lambda:

','.join(map(str, [(lambda(i): i.public_dns_name)(instance) for instance in instances]))

每个实例对象都有一个“public_dns_name”变量,用于返回主机名。这将返回如下字符串:

host1,host2,hos3,host4

是否可以仅使用列表推导来实现相同的目标?

2 个答案:

答案 0 :(得分:2)

您无法使用 列表理解,您仍然需要使用join

使用生成器表达式更有效

','.join(str(instance.public_dns_name) for instance in instances)

列表理解将如下所示:

','.join([str(instance.public_dns_name) for instance in instances])

不同之处在于它在连接之前在内存中创建了整个列表,而生成器表达式将在连接时创建组件

答案 1 :(得分:0)

我不确定“只有列表理解”是什么意思,你最终仍然应该使用join,但这个过程可能远没有那么复杂:

','.join(str(instance.public_dns_name) for instance in instances)

这里不需要创建lambda函数。请记住join接受任何可迭代,因此您无需创建列表只是为了将其传递给join