Python - 将列表列表的元素附加到新列表中

时间:2018-01-23 21:29:17

标签: python python-3.x list filter

我正在寻求帮助解决一个问题...

我们假设我有一个清单:

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],其中第三个元素是最低的并且是浮点数。

4 个答案:

答案 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]