假设check(x)是一个返回true / false的函数。 假设foo是元组列表
我想过滤foo中的元组。但是,我想检查的条件数量会有所不同
n = 2的
[ x for x in foo if ( check(x[0]) and check(x[1]) ) ]
n = 3的
[ x for x in foo if ( check(x[0]) and check(x[1]) and check(x[2]) ) ]
以任何方式将此列表理解作为n?
的函数编写答案 0 :(得分:3)
任何不使用内置all(…)
的原因?
所有(...)
all(iterable) -> bool
如果
True
bool(x)
True
x
中iterable
的所有值iterable
,则返回True
。如果
n
为空,请返回x
。
如果[ x for x in foo if all(check(y) for y in x) ]
是n >= len(x)
的长度,那么您可以使用:
[ x for x in foo if all(check(x[i]) for i in range(n)) ]
如果n
:
len(x)
如果min(n, len(x))
可能大于[ x for x in foo if all(check(x[i]) for i in range(n)) ]
,请将范围限制为n
。
答案 1 :(得分:2)
使用all
[ x for x in foo if len(filter(check, x[:n])) == n ]
其中date_default_timezone_set('America/Los_Angeles');
是支票数
您也可以使用filter
:
var isotope_port = $('.port-isotope');
isotope_port.isotope({
'itemSelector': '.item'
});
$('.port-filter a').click(function() {
$(this).parent().parent().find('li').removeClass('selected');
$(this).parent().addClass('selected');
var selector = $(this).attr('data-filter');
isotope_port.isotope({ filter: selector });
return false;
});