Применение функции к списку с помощью «<=» - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь применить функцию к списку, чтобы определить все случаи, когда температура ниже 22 градусов. Я хочу применить эту функцию к строке базы данных SQLite. Я пытался использовать функцию карты, но это возвращает результат <map object at 0x100783240>, а не список с 1 с.

Вот ввод, с которым я тренируюсь перед подключением к базе данных SQLite:

temperature = [13, 20, 36, 34, 23, 28, 34, 35, 20]

Вот остаток кода:

def non_wear_function(x):
    nonwear = []
    if temperature <= 22:
        nonwear.append(1)
        return nonwear

print(map(non_wear_function, temperature))

Когда я пытался напечатать список не одежды, как это:

Print(nonwear) 

выдал ошибку

Name error: non wear function not defined

1 Ответ

0 голосов
/ 01 мая 2018

Возможно, было бы неплохо прочитать основы языка немного шире, прежде чем спрашивать здесь: вы можете преобразовать любой итератор, например map, в список, используя list. Это решит вашу начальную проблему.

Вторая проблема возникает из-за того, что вы не учитываете область действия (также см. this ).

Если вы хотите сделать то, что я понимаю (то есть получить массив bool, указывающий, где temperature самое большее 22), non_wear_function вам не поможет: он либо вернет [1] или None. Вместо этого вы можете использовать структуру, как показано ниже:

def non_wear_function(t):
    return (t <= 22)

print(list(map(non_wear_function, temperature)))

Хотя в этом случае лучше использовать лямбда-функции или понимания:

print([(t <= 22) for t in temperature])
print(list(map(lambda t: (t <= 22), temperature)))

EDIT

Если вы хотите, вы также можете конвертировать bool в int, используя функцию int, например ::

print([int(t <= 22) for t in temperature])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...