我的名字为listDouble
的名单,任何有价值的项目都是Infitity。
我想将其从listDouble
删除。
试过:
listDouble.RemoveAll(item => item.Equals(0.0) && item.Equals("Infinity"));
我还在将result
添加到列表<>之前进行检查代码:
double result;
if (result == Double.NegativeInfinity)
result = 0;
else
return result;
但无法移除List<Double> listDouble
中的值=无穷大。
答案 0 :(得分:6)
我认为这是一个更优雅的解决方案,只需使用double.IsInfinity()
List<double> doubleTest = new List<double>()
{
0,
12233302.4,
double.NegativeInfinity,
double.PositiveInfinity,
5
};
doubleTest.RemoveAll(item => double.IsInfinity(item) || item == 0);
在评论后更新,说明他还想删除值0
。
答案 1 :(得分:2)
删除无限值:
require(data.table)
dt = data.table(x = sapply(input, '[', 1),
y = sapply(input, '[', 2),
z = sapply(input, '[', 3))
dt2 = dt[, {
l1 = list()
l1[[x]][[y]] = as.list(z)
list(l1)
}, by = list(x, y)]
dt3 = dt2[, list({
l2 = list()
l2[[x]] = unlist(V1, recursive = FALSE)
l2
}), by = x]
out = dt3[['V1']]
names(out) = dt3[['x']]
out
用listDouble = listDouble.Where(x => !Double.IsInfinity(x)).ToList();
替换无限值:
0
答案 2 :(得分:1)
您需要使用IsNegativeInfinity
和IsPositiveInfinity
或IsInfinity
方法代替与Double.NegativeInfinity
或Double.PositiveInfinity
进行比较。
List<Double> doubles = new List<Double> { Double.NegativeInfinity, Double.PositiveInfinity, 1.1, 2.0 };
var newList = doubles.RemoveAll(Double.IsInfinity);
答案 3 :(得分:1)
我怀疑等于无穷大的值也等于0
。试试这个。
listDouble.RemoveAll(item => item.IsPositiveInfinity());
或者,如果您尝试删除零值和无限值,则必须将&&
更改为||
。
答案 4 :(得分:1)
答案 5 :(得分:0)
您只需检查负无穷大,您需要添加正无穷大检查
listDouble.RemoveAll(x => x == double.PositiveInfinity || x == double.NegativeInfinity);
或只是:
listDouble.RemoveAll(x => double.IsInfinity(x));
答案 6 :(得分:0)
您需要改为代替double.PositiveInfinity
和double.NegativeInfinity
常量:
list.RemoveAll(i => i == double.PositiveInfinity || i == double.NegativeInfinity);