gpt4 book ai didi

c# - 在 List> 上不同

转载 作者:太空狗 更新时间:2023-10-29 23:20:00 24 4
gpt4 key购买 nike

genesUsingCrossover 是一个 List<List<double>> .

我正在使用以下代码行来计算不同的 List<double>List<List<double>> 内:

int count = genesUsingCrossover.Distinct().Count();

我不确定它是否正确。 genesUsingCrossover 中的元素数量是 1250 也是 genesUsingCrossover.Distinct().Count()返回 1250,所以我假设它们都是不同的列表。但是,查看监 window 口我注意到第三个和第四个列表是相同的。

所以,我假设这行代码不正确。有没有办法改善它?并计算不同元素的数量?

enter image description here

最佳答案

List<T> 不会覆盖 Object.Equals , 所以两个 List<double>只有引用相等的对象才会被认为是相等的。 ( HereDistinct<T>() 的实现,如果你想看看它是如何工作的。)听起来你想认为两个列表是相等的,如果组成它们的元素是相等的。为此,您可以使用 overload of Distinct<T>() 这需要 IEqualityComparer<T> ,它将用于确定两个列表是否相等。因此,在您的情况下,您可以提供 IEqualityComparer<List<double>> 的实现。表达了你对列表平等的看法。

该实现的外观完全取决于您希望何时将两个列表视为相等。例如,它们必须具有相同顺序的相同元素集,还是顺序不相关? Stack Overflow 上还有其他问题解释了如何实现两者。无论哪种情况,请记住 Distinct()将多次调用您的实现,因此您的算法执行良好非常重要。为此,可能值得一问是否 List<List<double>>确实是您想要的数据结构,或者其他选择是否更适合。

关于c# - 在 List<List<double>> 上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51388319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com