我有一个看起来像这样的嵌套list
list = [[1,2,3,4],[-1,-2,-3,-4],[1,2,-3,-4]]
我正试图找到一种方法来仅保留所有值具有相同符号的列表。因此,在这种情况下,嵌套在list
中的前两个列表将被保留,第三个列表将被删除。
有没有人建议如何实现这一目标?
答案 0 :(得分:2)
您可以使用集合理解来基本构建符号位(1
如果为正0
则为负)。如果该集合的长度为1
,则所有符号都相同,如果它是2
,那么它们就是混合符号。
>>> data = [[1,2,3,4],[-1,-2,-3,-4],[1,2,-3,-4]]
>>> [sub for sub in data if len({i > 0 for i in sub}) == 1]
[[1, 2, 3, 4], [-1, -2, -3, -4]]
答案 1 :(得分:2)
其他答案已经提供了单线解决方案。我个人认为那些难以阅读,因此难以调试。相反,我更喜欢在单独的一行中拼出每一步的解决方案。
话虽如此,让我们尝试一个简单的"mDataProp": function(source, type, val) {
var obj = {};
obj.value = source[1]; // Set column value
// Process value as desired ...
obj.value_filter = obj.value + ' foobar';
// Return value for filtering
if (type === 'filter') {
return obj.value_filter;
}
// Return original value for display, sort, etc.
return obj.value;
}
循环。
for
答案 2 :(得分:0)
您可以使用嵌套列表推导,将每个元素与每个子列表的第一个进行比较:
list1 = [[1,2,3,4],[-1,-2,-3,-4],[1,2,-3,-4]]
new_list = [b for b in list1 if all(i < 0 if b[0] < 0 else i >= 0 for i in b)]
输出:
[[1, 2, 3, 4], [-1, -2, -3, -4]]