求最值,求和
阅读 1.8k
在程序开发中,求最值和求和,是我们常常会遇到的一种最基本的运算。本篇将三种语言放在一起进行对比,来看看它们各自是怎么做的,有什么风格上的差异。
Python
Python擅长数据处理和运算,所以,我们先来看用它来怎么实现:
digits = [-9, 20, 0, 6]
print(min(digits))
print(max(digits))
print(sum(digits))
digits是一个列表(类似JavaScript中的数组),从中可以看到,Python的设计风格,非常的简单粗暴,求和,用一个sum()方法就搞定了,干净简洁,没有丝毫的拖泥带水。
JavaScript
和Python一样,JavaScript也是脚本语言,我们来看看用JavaScript怎么实现:
// 求最大值
const digits = [-9, 20, 0, 6]
console.log(Math.max(...digits))
// 求和
sum = digits.reduce((prev, current) => prev + current)
和Python不同,对于求最值,max方法并非全局可用,而需要用Math.max()来进行求和,另外,Math.max()的参数无法接收数组,所以,还需要用展开运算符
将其展开。
对于求和,JavaScript并没有提供一个内置的求和函数,需要自己写一个迭代操作来进行求和,当然,用forEach遍历也可以。
整体而言,在JavaScrip中,这些基本的运算,并没有用Python处理起来那么方便,而Python几乎就是傻瓜式的。
Java
最后,我们再来看看Java中是怎么实现的,先来看求最值:
public class GetMax {
public static void main(String args[]) {
int [] digits = { -9, 20, 0, 6 };
int max = digits[0];
for(int i = 1; i < digits.length; i++) {
if (digits[i] > max) {
max = digits[i];
}
}
System.out.println(max);
}
}
因为Java是纯粹的面相对象语言,所以,必须要先创建一个类。另外,由于Java中并没有提供全局的求最值的方法,所以,只能循环比较得出最值。当然,也可以使用集合
的方式来求最值:
import java.util.Arrays;
import java.util.Collections;
public class GetMax2 {
public static void main(String args[]) {
Integer[] numbers = { -9, 20, 0, 6 };
int max = Collections.max(Arrays.asList(numbers));
System.out.println(max);
}
}
不管怎么说,用Java求最值明显麻烦得多。那么求和呢?
import java.util.Arrays;
import java.util.List;
public class GetSum {
public static void main(String args[]) {
List<Integer> list = Arrays.asList(new Integer[] { -9, 20, 0, 6});
Integer sum = list.stream().reduce((x, y) -> x + y).get();
System.out.println(sum);
}
}
上面使用了流
的方式来进行求和。
小结
虽然只是一个简单的例子,但是,从中我们可以发现,这三种语言的设计风格有着明显的不同,Python语言设计非常简洁,使用起来最为方便,而Java由于是纯粹的面向对象语言,且是强类型语言,所以,它的操作最为繁琐。
参考
最后编辑于: 2022-04-16