Python-第10行的值太多,无法解压缩
在下面的代码中,我试图过滤价格超过1.00的水果Python-第10行的值太多,无法解压缩,python,list,filter,tuples,Python,List,Filter,Tuples,在下面的代码中,我试图过滤价格超过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(pre
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行的值太多,无法解包
选项1:只需在不使用
过滤器的情况下调用该方法
>>> preferred(fruits)
# [('orange', 1.25), ('pear', 1.49)]
选项2:以某种方式使用可调用的
fruits = [
( 'apple', 0.99 ),
( 'orange', 1.25 ),
( 'pear', 1.49 ),
( 'banana', 0.75 ),
]
filter(lambda fruit: fruit[1] > 1.0, fruits)
# [('orange', 1.25), ('pear', 1.49)]
选项2.5:重写首选
函数以返回单个水果的真
/假
您正在混合
filter
和list comprehension(在本例中,两者的作用相同),您需要执行favorites=preferred(fruits)
或使preferred
根据单个水果的条件仅返回True或False。@cricket\u 007 filter将callable作为第一个参数,OP正在传递可调用的preferred
作为第一个参数。filter
不需要使用lambda,preferred
可以在OP代码中轻松修改,以返回列表中每个水果的比较值,而不是所有水果的比较值。非常感谢。“我在混合两种不同的动物。”“蟋蟀”007。对不起,板球。我是新来的。谢谢你的帮助
def preferred(fruit):
return fruit[1] > 1
filter(preferred, fruits)
# [('orange', 1.25), ('pear', 1.49)]