我们平常会经常使用诸如:三元运算符、判空、流处理等操作。在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循环放在中间,左边为取值,右边为过滤条件,还是像天平式一样的写法。