Re: [问题] 如何去除循环后多余的东西

楼主: TuCH (谬客)   2019-12-05 15:02:14
讲解一下 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)]
作者: cuteSquirrel (松鼠)   2019-12-05 19:18:00
推 list comprehension
作者: k12795 (远远)   2019-12-06 04:19:00
倒数第二个可以讲解一下逻辑顺序吗 越想越乱
作者: s4028600 (佑)   2019-12-06 04:43:00
我想应该是将1到100 loop到i 然后条件1 i余数等于0条件2 i>50 不然就打印0
作者: k12795 (远远)   2019-12-06 05:05:00
主要是好奇if else for 摆放位置的差别
作者: ddavid (谎言接线生)   2019-12-06 18:29:00
楼上,if else跟for没有相关性,要分开看a if b else c近似为C++里面的b ? a : c(注意顺序)b成立的话就a,否则就c那一行难懂是因为必须要知道语法parse的优先级,如果能加上括号就会比较好读了我个人写到这些多个逻辑式、运算子或语法互套的情况都习惯很详尽加括号表示解读顺序,不然有时自己回头看都会花掉XD
作者: k12795 (远远)   2019-12-06 20:12:00
真的不知道从那边开始判读*哪

Links booklink

Contact Us: admin [ a t ] ucptt.com