- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564691 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174630
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
你猜 1 行Python代码能干什么呢?神奇的单行 Python 代码; J% Q* [" t9 S# t2 Z+ _( z
0 V0 K1 C7 Y7 R" V8 a文章目录2 z2 N$ B& s) u( n% W% M8 C' d
⛳️ 1 行代码的由来! o2 R: ^5 I' \% V
⛳️ 列表推导式) e) E2 {' Y/ C7 C
⛳️ 合并字典5 z& ]6 [& o1 Z) T2 Z1 e
⛳️ 列表去重( n3 R+ w) `7 {8 w! a
⛳️ 一行代码交换变量值6 I6 f+ `" ?! F2 p' k
⛳️ 利用 print 输出日志到文件
" Q5 x% ~3 A/ f3 v⛳️ 转置矩阵
5 z6 t' ^! ^5 q; |4 k8 D! ?% s⛳️ 一行丧心病狂的代码
' h' X7 N. j. m⛳️ 1 行代码的由来' }) k+ { Y# V/ @; q* m
都说 Python 简单快捷,那本篇博客就为大家带来一些实用的 Python 技巧,而且仅需要 1 行代码,就可以解决一些小问题。/ B! U1 v0 ]/ U. {) o- ?
3 f% ^: m9 }2 X2 _: m( V所有的 1 行代码,全部依据标准的 Python 语言规范实现。
1 C, L5 i; Q, `$ d+ c9 i( B3 A. v" @0 l( \; k, [# l5 c
⛳️ 列表推导式* ? b8 }% y+ P
生成器语法绝对是 Python 带给我们的优质语法糖,它可以基于现有的列表创建一个新的列表,而且语法格式简单。+ I$ g0 ~6 f/ E% s0 [' ~6 w
m8 F6 f6 j0 y& W1 l
students = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
# b) @/ f9 B$ p6 }new_students = [name for name in students if name.startswith("橡皮")]
* y" Y( C+ q# q% D* x& Xprint(new_students)
R5 R' l7 A' _$ X$ \1' g, W' \. H! s5 j# T/ O+ z0 U
2
( L1 O# {5 ^9 h/ P/ _+ u8 Z& N3$ `$ ~5 V4 E" g/ A
上述代码的第二行,在原有列表中过滤出全新的列表,而且语法简单,基于该语法结构,还有字典推导式,集合推导式相关知识点,都可以使用 1 行代码完成目标需求,可以学习来。
% S+ T$ _. }& H5 \/ V$ F- H4 I1 U n, @ P1 h3 l
⛳️ 合并字典
" V- Z# ]# ^5 ^在 Python 实战中,有时需要将两个字典进行合并,最常用的是使用 update() 方法,或者 merge() 函数,当然也有工程师使用刚刚提及的字典推导式实现,那有没有更加简洁的写法呢?可以看下述代码+ f3 n& \+ a$ C, l0 s9 ^1 C
, \% u% z! g, s# n8 v
my_dict_1 = {'red': '红色', 'green': '绿色'}: M6 C$ `' z1 v4 V' C+ T4 e. y
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
" A$ i% O7 R* s8 ~; kmerged_dict = {**my_dict_1, **my_dict_2}8 H- ]5 C6 N2 t: ^0 P% E8 J, I
5 B1 O7 a- H5 b0 I' i& |5 O( S; rprint(merged_dict). H, b: N9 _) ]% G) m+ _: Q8 I
1$ v# ~2 e9 O- A/ v0 z
2; A, Q: K& O B$ J
3
0 C. v0 K- U3 ]! r1 Q# Y. ~4$ B- D/ _$ W" T! L, a
58 Y# X5 _$ e. L2 c
其中 ** 符号是解包运算符,即将字典中的内容拆解,解包之后就可以参照上述代码使用 {} 合并字典,当然也可以直接使用 dict() 函数进行合并
7 ?. R" T, e) g3 ~4 T+ g# Q& ~( t
& b! p s3 \1 ?+ _4 \5 {my_dict_1 = {'red': '红色', 'green': '绿色'}& G4 B0 H/ D; Q2 n: u* A( A W8 O' ]
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
, k Y1 L w% ?merged_dict = dict(**my_dict_1, **my_dict_2)
2 ?8 u7 T2 M1 M0 E, T1 M
& h4 U, M1 ^2 w6 ^print(merged_dict)
3 j2 Q1 w! U1 ^2 k# T1 b13 [5 Z5 B! M7 ]7 Z8 w: t
2
2 e6 I8 P; L6 O3 r* M3 x G v6 a7 o) x/ @
4
5 U- `6 v7 C5 E/ u5 [# r5
; b. Z; `$ [$ K2 |如果你一时没有转换过来,那可以使用下述代码进行转换,即使用元素拼接技巧,先将字典转换为 list,然后连接。
/ g4 X9 A! i: J4 q% J% `- w1 o
my_dict_1 = {'red': '红色', 'green': '绿色'}1 Y8 b. P5 K6 E9 B1 X; t! q8 a
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
% Q/ O9 K' |& H# {2 |merged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items()))6 H5 D0 ?+ u& `; ?3 s1 z3 L* T- t& J
print(merged_dict)6 e) I( Q3 b' g2 r3 W% b5 R# ?
1
, T# t9 h- E& M9 y28 F+ y0 b4 W8 f
3# \* k5 N' y9 e/ j9 k- [
4+ P$ q2 x+ U. e
⛳️ 列表去重5 ^& Q; X+ U5 D! v: [
在实战中,也会碰到列表去重的情况,如果列表数据量不大,可以直接使用 set() 函数去重,即利用集合不允许包含重复值这一特性。
+ v+ \! Z. s7 F
- H* Y: w& W7 ^) O/ Q9 w6 Mnames = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
( ^/ K9 I6 o2 s6 S4 S( R8 c& L! A4 C
un_list = list(set(names))
9 n- D: B& j8 V! ]8 z1 q
3 T: S; G) J3 C4 uprint(un_list)3 [: w, l% y. n$ r
1
3 ?* k& n" C Y. B2
3 W7 z, @/ M& `9 a: C& t2 E; T3- x/ X5 K1 O4 ?, |+ K/ j
4* I2 m0 L- d: M# q/ J4 T7 c: E% Q
5
) |1 s |2 J7 g- n8 E8 S⛳️ 一行代码交换变量值
3 L& [5 v/ p* V! i这也是 Python 中的语法糖了,在做排序类算法时经常碰到,使用一行代码进行变量值的交换。
. {+ ]! g/ m2 s2 N" M3 M) Z( j9 O
a = 10 W- Q9 O3 M& b$ n: L; D
b = 23 ] r0 z8 y' n w5 v
a, b = b, a
: P# ]; n! ?& ]; [# s5 G
) o: k1 r' t I8 d+ q7 T) xprint(a, b)! I* A* C. B! E: O8 b5 \ O
1
4 M9 r/ [0 L- [' ?25 e' e5 \1 N+ d; q4 _ k1 c8 q$ Z
3
) ~- B' K/ E( b2 s9 A4$ k% }8 w. T$ n$ Y
5
5 F& i0 i T3 C1 b在此基础上,可以扩展到更多变量,此时还会衍生出另一个一行代码知识点,即一行代码为多个变量赋值,示例代码如下所示:# j8 Q" D$ P% U! d' Q0 }1 P4 f
5 D! R' h" }/ i0 W3 P( q
a, b, c, d = 1, 2, 3, 4
- @3 @% E( E# J/ Z- {( w0 t(a, b), (c, d) = (b, a), (d, c)0 {# u$ D9 d" c9 D
; H- W9 D) p# V" Gprint(a, b, c, d)
& n9 W, f' p' J1
' K, S( }6 R, I6 O4 D0 E* t1 U1 [2. I" b6 n e0 ]! I0 {8 A. W4 A
3& R5 W6 N; [2 ~2 J( l
4
8 k5 M/ b, O F9 E! T7 }) I; a. [+ l' @⛳️ 利用 print 输出日志到文件; ?8 }4 ^1 c+ o
编写代码经常要测试输出结果,因此会大量的使用到 print 函数,而这些结果默认会输出到控制台,关闭程序运行之后,结果就消失了,实践中,可以利用一下 print 函数的第二个参数,实现将输出写入到文件中。
; ]. H7 s9 @4 c" r) S
/ w5 a8 n6 q4 a! Z2 d7 }3 s3 Wprint("Hello, World!", file=open('ca.txt', 'w'))- p# l% `" ~$ e. u
1
- h8 Z& ~( Y( c$ G/ q; O9 G. j⛳️ 转置矩阵
( B( v, V' p3 l) X: l6 Z对矩阵进行转置,也可以使用一行代码实现。
! P! ?, ]3 W+ {1 _! N8 B5 `1 G0 `% v
old_list = [[1, 2], [3, 4]]7 Y1 r# f' t/ W8 f7 B1 X4 T" W
. p! Y5 X5 ~# i! I' ?print(list(zip(*old_list)))
& o2 S, C! u% t7 u8 k( g1
9 N& e; ?5 X* j4 t. y2! d8 H. S; O2 h8 U4 d1 n \5 D, t
3: B5 K3 n; i% l$ K" p
但上述代码会将列表转换成元组,如果不希望该情况出现,可以使用下述代码,依旧是一行。
2 ? F; N0 R3 A& N8 i/ J) F y9 v/ i3 h8 W, F( j3 A1 L
old_list = [[1, 2], [3, 4]]8 B* T# A( Z. N# P- W4 a' \
print(list(list(x) for x in zip(*old_list)))2 e, ]0 |" N _6 Q
1! A$ k2 Y5 e4 C) C
2 H+ r% G2 y8 J$ o
⛳️ 一行丧心病狂的代码7 Q3 y( U+ {6 `7 V
除了正常的操作外,在 Python 中还能实现一些神奇的操作,例如下述代码:
% a* S b3 S W* N, r7 Z: T7 o& f
print(eval(input()))
0 b' u9 l( {5 k$ e2 D1
; W) b' m7 C$ s9 G可以输入单行代码,然后直接输出结果!" n4 l4 d. w2 [& z% U1 t/ d' N
2 J9 p% ]/ ]/ s3 e) L1 }: O! z! Y该代码最佳的实践是一行代码实现一个计算器。2 f7 F3 _/ F$ e
————————————————
3 b/ M1 v6 ]- j: W9 K- P: X版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 {0 \1 ]9 m" b, i# Q' m
原文链接:https://blog.csdn.net/hihell/article/details/126094977
. S0 K! _0 q8 s) r: g. l
" r4 Q% \+ y6 k8 H# W y0 }* t# M+ t# }4 B4 ]6 J
|
zan
|