【发布时间】:2016-06-06 23:12:27
【问题描述】:
在下面的代码中,我试图过滤价格超过 1.00 的水果..
fruits = [
( 'apple', 0.99 ),
( 'orange', 1.25 ),
( 'pear', 1.49 ),
( 'banana', 0.75 ),
]
def preferred(fruit):
pfruit = [ (x, y) for (x, y) in fruit if y > 1 ]
return pfruit
favorites = filter(preferred, fruits)
print favorites
我收到一条错误消息:
ValueError:在第 10 行解压的值太多
【问题讨论】:
-
您正在混合
filter和列表理解(在这种情况下执行相同的操作)您需要执行favorites = preferred(fruits)或使preferred根据条件返回 True 或 False一个水果。 -
@cricket_007 过滤器将可调用对象作为第一个参数,OP 将
preferred作为第一个参数传递给可调用对象。