从Java到Python之常用代码写法(三元运算符、判空、流处理)

我们平常会经常使用诸如:三元运算符、判空、流处理等操作。在Python中一样有类似的操作,只是语法不太一样而已,可以通过下方的代码写法对比,快速的从Java切换到Python。

三元运算符

java

System.out.println(true?"真":"假");

python

print("真" if True else "假")

在python中,三元运算符其实就是if else,只是条件放在了中间,条件为真执行左侧代码,条件为假执行右侧代码。由于真假结果在条件的左右两侧,像天平一样,所以有的地方又叫它天平式写法。

判空操作

java

String a = null;
if (a == null) {
    System.out.println("a变量为空");
}

python

# 判空
a = None
if not a:
    print("a变量为空")

# 判断非空
a = "a"
if a:
    print("a变量不为空")

在python中,None默认为false,所以要想判空需要增加一个not关键字,判断非空直接使用变量作为if条件即可。(我个人经常搞混,可以这么记:not和null发音有点像,所以not就是null,就是判空)

流处理(类似)

java

// 过滤数据
List<String> list = li.stream()
        .filter(e -> e.startsWith("a"))
        .collect(Collectors.toList());

// 转成map
Map<Long, User> map = li.stream()
        .collect(Collectors.toMap(
                User::getId,
                Function.identity(),
                (v1, v2) -> v1)
        );

python

# 过滤数据
li = ["a1","a2","a3","b1","b2","b3"]
list = [item for item in li if item.startswith("a")]
print(list)

# 转成map
li = []
for i in range(10):
    user = {}
    user["id"] = i
    user["name"] = f"name{i}"
    li.append(user)
map = {item["id"]: item for item in li}
print(map)

在python中,类似流处理(因为它应该不算是流处理)的写法其实就是for循环。
过滤数据(最终结果是list)那就用[],转成map(最终结果是map)那就用{}
for循环放在中间,左边为取值,右边为过滤条件,还是像天平式一样的写法。