latest_question_list = Question.objects.order_by('-pub_date')[:5]
output = ', '.join([p.question_text for p in latest_question_list])
爲什麼之前的for循環p.question
?
latest_question_list = Question.objects.order_by('-pub_date')[:5]
output = ', '.join([p.question_text for p in latest_question_list])
爲什麼之前的for循環p.question
?
的[p.question_text for p in latest_question_list]
代碼,意味着一個新的數組將被創建並在陣列中的元素將是每個元件的question_text
屬性中latest_question_list
。
更多here。
Python支持一個概念,稱爲列表解析。它可以用來以非常自然,簡單的方式構建列表,就像數學家用來做的那樣。
以下是在數學中描述列表(或集合,元組或向量)的常用方法。
S = {x² : x in {0 ... 9}}
V = (1, 2, 4, 8, ..., 2¹²)
M = {x | x in S and x even}
你可能從數學中知道上述事情。在Python中,您可以像數學家一樣編寫這些表達式,而不必記住任何特殊的隱含語法。
這是你如何做到上面的Python:
>>> S = [x**2 for x in range(10)]
>>> V = [2**i for i in range(13)]
>>> M = [x for x in S if x % 2 == 0]
>>>
>>> print S; print V; print M
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]
[0, 4, 16, 36, 64]
瞭解更多關於列表綜合here。
這是簡單的Python語法,它很容易閱讀。 像Python這樣的高級編程語言旨在使語法更清晰,易讀。 由於C語言中的語法,Java必須在循環體內使用循環變量,因此您必須感到困惑。
請注意,這種語法僅用於循環內的1個操作。如果你有多個語句在循環中運行,你將在循環體內執行這些語句。
這是Python的一個功能,名爲[list comprehensions](https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions)。 –