2015-08-07 2 views
0

У меня есть проблема, чтобы понять этот кодНужна помощь, чтобы понять этот код

def get_device_sensors(device_id): 
    return [elm["sensor"] for elm in db.DB.query("select * from data ", 
               (device_id,))] 

Я новичок в Python. Я не знаю, что означает elm["sensor"].
Означает ли это ?:

for elm in db.DB.query("select * from data ") 
    return elm['sensor'] 
+3

Это [понимание списка] (https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions) – khelwood

ответ

3

Это означает, что точно так же, как:

results = [] 
for elem in db.DB.query("SELECT * FROM data", (device_id,)): 
    results.append(elem['sensor']) 

return results 

Это list comprehension, как @khelwood отметил, что означает, что вы строите список из чего-то вы можете итерацию над.

Резюмируя:

[ <operation> for <values> in <iterable> ] 

в основном является обобщающим для:

accumulator = [] 
for <values> in <iterable>: 
    accumulator.append(<operation>) 
# accumulator contains the result now. 

<operation> обычно делает что-то с <values>, но она также может быть постоянным или только сам <values>.

+1

Возможно, вы намеренно пропустили это, но в контекстах списка также есть условие на конец. '[ за в , если ]' или что-то в этом роде, чтобы следить за вашей презентацией. –

+4

Да, но я оставил это до документации python. Не нужно начинать воспроизводить все это здесь ... Это также объясняет гораздо лучший способ использования нескольких сегментов 'for'. –

Смежные вопросы