我正在尝试将一个函数应用于列表,以识别温度低于22度的所有实例。我想将此函数应用于SQLite数据库的一行。我试图使用map函数,但这会返回结果<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
答案 0 :(得分:1)
在此处询问之前,更广泛地阅读语言的基础知识可能是一个好主意:您可以使用map
将list
之类的任何迭代器转换为列表。这解决了您的初始问题。
出现第二个问题是因为您没有考虑范围(另请参阅this)。
如果你想做我理解的事情(即获得一个bool
数组,指出temperature
最多22个),non_wear_function
将无法帮助你:它返回{{ 1}}或[1]
。相反,您可能希望使用如下结构:
None
虽然在这种情况下,使用lambda函数或理解可能更适合:
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)))
功能将bool
转换为int
,例如:
int