什么是Python的min / max的C#等价
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了什么是Python的min / max的C#等价,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1190字,纯文字阅读大概需要2分钟。
内容图文
![什么是Python的min / max的C#等价](/upload/InfoBanner/zyjiaocheng/784/bac6fcc968d140dba72f7f10467d7e03.jpg)
什么是C#的以下Python的最小/最大代码的等价:
pairs = [ (2,"dog"), (1, "cat"), (3, "dragon"), (1, "tiger") ]
# Returns the PAIR (not the number) that minimizes on pair[0]
min_pair = min(pairs, key=lambda pair:pair[0])
# this will return (1, 'cat'), NOT 1
似乎C#的Enumerable.Min非常接近.但是根据its MSDN doc,它总是返回最小值VALUE(不是原始对象).我错过了什么吗?
编辑
请注意 – 由于排序(O(nlogn))在计算上比找到最小值(O(n))更重,所以我不倾向于首先进行排序.
请注意 – 字典也不是理想的方法.它不能处理有重复键的情况 – (1,“cat”)和(1,“tiger”).
更重要的是,字典无法处理要处理的项目是复杂类的情况.例如,使用年龄作为关键,找到动物对象列表的最小值:
class Animal
{
public string name;
public int age;
}
解决方法:
BCL没有MinBy功能,但很容易自己编写一个.
public static T MinBy<T, C>(this IEnumerable<T> items, Func<T, C> projection) where C : IComparable<C> {
return items.Aggregate((acc, e) => projection(acc).CompareTo(projection(e)) <= 0 ? acc : e);
}
您可以选择编写比我更复杂的MinBy,以避免重新评估投影.无论如何,一旦你拥有MinBy功能,你就可以轻松解决问题:
var pairs = new[] {Tuple.Create(2,"dog"), Tuple.Create(1, "cat"), Tuple.Create(3, "dragon"), Tuple.Create(1, "tiger")};
var min_pair = pairs.MinBy(e => e.Item1);
内容总结
以上是互联网集市为您收集整理的什么是Python的min / max的C#等价全部内容,希望文章能够帮你解决什么是Python的min / max的C#等价所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。