作者TuCH (谬客)
看板Python
标题Re: [问题] 如何去除回圈後多余的东西
时间Thu Dec 5 15:02:14 2019
讲解一下 list comprehension
res = [i.get("name") for i in a]
等同於
res = []
for i in a:
temp = i.get("name")
res.append(temp)
其实就是map的机制
任何可以 iteration 的东西 可以使用这个机制做一些处理
例如说 [f"Hello, {i}" for i in ["Jack", "Mary"]]
除了map 还可以做filter
# 输出100以内的偶数
[i for i in range(100) if i%2==0]
# 输出字串里面有Doctor的字串
[i for i in ["Doctor X","Doctor Y", "teacher"] if "Doctor" in i]
再来更多变化
# 输出100以内的偶数 并且如果小於50的值都设为0
[i if i > 50 else 0 for i in range(100) if i%2==0]
# 99乘法表
[f"{i}X{j}={i*j}" for i in range(1,10) for j in range(1,10)]
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.65.79 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1575529336.A.38B.html
1F:推 cuteSquirrel: 推 list comprehension 12/05 19:18
2F:推 k12795: 倒数第二个可以讲解一下逻辑顺序吗 越想越乱 12/06 04:19
3F:推 s4028600: 我想应该是将1到100 loop到i 然後条件1 i余数等於0 12/06 04:43
4F:→ s4028600: 条件2 i>50 不然就打印0 12/06 04:44
5F:推 k12795: 主要是好奇if else for 摆放位置的差别 12/06 05:05
6F:推 ddavid: 楼上,if else跟for没有相关性,要分开看 12/06 18:29
7F:→ ddavid: a if b else c近似为C++里面的b ? a : c(注意顺序) 12/06 18:30
8F:→ ddavid: b成立的话就a,否则就c 12/06 18:31
9F:→ ddavid: 那一行难懂是因为必须要知道语法parse的优先顺序,如果能 12/06 18:32
10F:→ ddavid: 加上括号就会比较好读了 12/06 18:33
11F:→ ddavid: 我个人写到这些多个逻辑式、运算子或语法互套的情况都习惯 12/06 18:33
12F:→ ddavid: 很详尽加括号表示解读顺序,不然有时自己回头看都会花掉XD 12/06 18:34
13F:推 k12795: 真的不知道从那边开始判读 12/06 20:12
14F:→ k12795: *哪 12/06 20:12