我正在寻求帮助解决一个问题...
我们假设我有一个清单:
list1 =[[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']
我想要做的是基于内部列表的第三个元素的类型,从这些值中获取过滤的最小值,只有这些是浮点数。
(如果第三个元素是相同的值,那就完全没问题了,但是我很好奇,如果它不会提供任何例外 - 对我来说,如果它们甚至是随机挑选的话它会是最好的)
我正在尝试这样的事情:
list1 = [[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']
something = min(filter(lambda x: x[2] is not isinstance(x[2], float) == True,list1))
...并且我从该列表获取第一个元素:[1, 0, 2.83]
,而不是[3, 1, 1.0]
,其中第三个元素是最低的并且是浮点数。
答案 0 :(得分:1)
SELECT *
FROM #TEMP_99RecordsNeedingEndDateUpdated
ORDER BY StudentID asc, StatusEffectiveDate desc
顺便说一句,恕我直言,对于这种情况最合适的数据结构将是 $('a').click(function() {
alert('click...!');
});
//press enter on text area..
$('a').keypress(function(e) {
var key = e.which;
console.log('checking press key: ' + key)
if (key == 32) // the enter key code
{
$('a').click();
}
});
something = min((x for x in list1 if isinstance(x[2], float)), key=lambda x: x[2])
,因为它们构成固定大小的异构集合(在这种情况下是三元组),如这样:
list
答案 1 :(得分:0)
您正在使用min
函数错误 - 它使用整个元组进行排序(并且元组中的第一个值规则列表的排序顺序)。我建议使用一个从元组中提取最后一个元素的键:
min(..., key=lambda b: b[2])
答案 2 :(得分:0)
你可以试试这个:
list1 =[[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']]
min_val = min(filter(lambda x:not isinstance(x[-1], str), list1), key=lambda x:x[-1])
输出:
[3, 1, 1.0]
答案 3 :(得分:0)
此选项也是:
>>> from operator import itemgetter
>>> list1 =[[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']]
>>> min((x for x in list1 if isinstance(x[-1], float)), key = itemgetter(-1))
[3, 1, 1.0]