列表作为函数输入,奇怪的语法

时间:2013-07-31 15:19:49

标签: python list semantics

在学习 Django 框架基础知识时,我找到了以下代码。我知道join()方法是如何工作的,但坦率地说我不知道​​里面是什么。

output = ', '.join([p.question for p in latest_poll_list])

当然结果对我来说非常清楚,但我宁愿这样使用它

array = []
for p in latest_poll_list:
    array.append(p.question)
output = ', '.join(array)

任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

array = [p.question for p in latest_poll_list]

是列表理解。它相当于:

array = []
for p in latest_poll_list:
    array.append(p.question)

因此,您发布的代码将完全相同。列表理解只是创建带有for循环的列表的一种更紧凑的方式。


仅供参考,您实际上不需要创建列表,

output = ', '.join(p.question for p in latest_poll_list)

也应该有效,因为join接受了一个可迭代的。