- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565629 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174912
- 相册
- 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 代码7 W: x# i) [+ U- s& |
- e4 i$ ?9 Q% Z8 Z文章目录
* a }! D; J& Q: L⛳️ 1 行代码的由来
m* W# `* ~* i# I7 u, P⛳️ 列表推导式
# |5 }( ? y1 K/ k- O⛳️ 合并字典
* t9 I7 {: J @" l⛳️ 列表去重' k6 T! ^- B! K1 ]1 u7 \$ J$ F8 W5 L, |
⛳️ 一行代码交换变量值7 d$ L: A- T& x7 _, t
⛳️ 利用 print 输出日志到文件
$ T. g& F4 G% G1 O⛳️ 转置矩阵
4 k+ M! i% u: [, N' a! n9 ?- y h# t- J# E⛳️ 一行丧心病狂的代码- z* g+ E/ K7 a( t8 V# {& [
⛳️ 1 行代码的由来 ~* X8 _5 P% \3 n; Q( R; Q
都说 Python 简单快捷,那本篇博客就为大家带来一些实用的 Python 技巧,而且仅需要 1 行代码,就可以解决一些小问题。3 U6 v/ _( [$ O
1 \6 q7 M$ D4 ^* R' |( `
所有的 1 行代码,全部依据标准的 Python 语言规范实现。6 _2 p6 |5 E: f, O1 i$ v9 o+ O/ @* S
! J4 ` M' G$ M; m6 J) t
⛳️ 列表推导式
, C$ s/ D) J- ~1 U: O生成器语法绝对是 Python 带给我们的优质语法糖,它可以基于现有的列表创建一个新的列表,而且语法格式简单。% ]! t( A. }9 S
0 c3 B7 U4 j/ I t# A8 @
students = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
2 _2 [0 J* g. R- G# U3 Y Lnew_students = [name for name in students if name.startswith("橡皮")]
* e& S: o+ |) R8 J9 W0 Rprint(new_students)
3 e0 f; Y0 {& ?& K7 ?! Z1
& ]+ c& l9 T, I22 _ N- ]' q b
3! c* ?7 k, D6 E" L7 s
上述代码的第二行,在原有列表中过滤出全新的列表,而且语法简单,基于该语法结构,还有字典推导式,集合推导式相关知识点,都可以使用 1 行代码完成目标需求,可以学习来。" D; R4 q. e% F5 v9 w
- c3 T. r8 q- H) F- j; S
⛳️ 合并字典2 d" r. r2 a' V4 C) k, L
在 Python 实战中,有时需要将两个字典进行合并,最常用的是使用 update() 方法,或者 merge() 函数,当然也有工程师使用刚刚提及的字典推导式实现,那有没有更加简洁的写法呢?可以看下述代码
+ Z4 N: B2 \) ?. c( y# _: y: |7 `; m* T+ L) R
my_dict_1 = {'red': '红色', 'green': '绿色'}
3 f0 j/ u5 X' G- V' d7 Vmy_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}& C2 w/ Q2 D. r! ^3 B) |
merged_dict = {**my_dict_1, **my_dict_2}
5 g2 r( P4 ]' ~- ^- M% j2 ]1 k( Q. @. j, o: p+ C
print(merged_dict)
1 h4 y0 O% m) o9 f3 W- t1
7 Z; \$ x) q; k: o2
, e" U" _3 R5 Y9 N# H3
/ p9 X8 q, X, k7 t: |/ O4
9 W2 S$ V- }7 k% H, b58 ~6 G: ?2 |+ S6 J. d
其中 ** 符号是解包运算符,即将字典中的内容拆解,解包之后就可以参照上述代码使用 {} 合并字典,当然也可以直接使用 dict() 函数进行合并
3 o& S ^7 w- }" s \7 K9 r: t: C6 M5 N0 h) [
my_dict_1 = {'red': '红色', 'green': '绿色'}
* O; L7 n# b9 G4 fmy_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
+ t# h+ Q* l6 E! f, [9 Emerged_dict = dict(**my_dict_1, **my_dict_2)4 F4 r& ]% h# z# @" C- N
: h9 s$ T* l$ V1 p4 K
print(merged_dict) G" R$ ?' a# S, X3 @
19 B2 _/ Y2 U, S5 ^) x
2
: U9 ]1 e6 @% S' T i3
6 q/ T$ L1 H' o9 t4
( V* f4 z1 h5 H5, Z: I' w3 z6 }7 \$ L* v! T
如果你一时没有转换过来,那可以使用下述代码进行转换,即使用元素拼接技巧,先将字典转换为 list,然后连接。- o0 Q' B& ?. X+ X0 {1 ^
0 a' q* A9 u) x' T% {6 b3 Emy_dict_1 = {'red': '红色', 'green': '绿色'}
! N9 f, U V( d. I/ d5 ]: q) Xmy_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
; s& P/ b6 j7 n7 y6 xmerged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items()))6 g+ I T+ G$ g* N- c. Z" e
print(merged_dict)
: E$ U) q: r2 l) c0 G+ U4 o7 s1
6 E) X- L& R6 r& F& x9 P2
8 g( G! V; s5 B, i j& [33 E6 `+ ~5 s: q' ]
4
1 ]: X* Y+ V( z9 u⛳️ 列表去重
7 A3 B4 k8 h( V- H0 L$ [7 g: O% j在实战中,也会碰到列表去重的情况,如果列表数据量不大,可以直接使用 set() 函数去重,即利用集合不允许包含重复值这一特性。9 D/ Q- G' i& s6 a: z
7 y6 P. U! h4 v* [names = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
3 E/ }/ o/ Z) M' q# S1 D
) l4 E5 @: h1 `, [# @; V. k+ g8 Aun_list = list(set(names))2 }: r. Q% D; }
! G/ [$ \3 @0 v/ q# c- a
print(un_list)
* \7 y+ w/ ^$ q G1
1 A( ^# x- H! Q. [ p2 P, X2- E% f; G* R( d5 H. Y
3
3 m; W9 v# G7 {* ~7 l4' B: Q- t6 d2 [( A. H% C
53 E3 Q0 Z8 x6 ~: M+ t/ B' b
⛳️ 一行代码交换变量值
! e" Q$ f. u& D$ e这也是 Python 中的语法糖了,在做排序类算法时经常碰到,使用一行代码进行变量值的交换。1 ~9 i( ]' i- z5 f, Q. x$ J
4 E2 `7 ~ }1 x4 a2 \; t4 u' B- S5 za = 1
! ^. O4 J7 G( J- A* Db = 2
0 ^( Y* P w. D. [$ M' l% q3 n* _! Ja, b = b, a: p' Q' k2 M3 l% `1 c& O9 T6 Q/ _$ }
# r& p" @; R2 s4 o
print(a, b)! ^0 M7 R0 N w& ~
18 m" z: R5 J% V, J1 G: N1 ^
22 G3 m5 J+ g+ @* |5 s: `
36 f6 i2 }- E! i, X' M: g) ^, o7 Z
4+ E7 z% s' r" `) O; u
5
# B) c- l) }; C( |在此基础上,可以扩展到更多变量,此时还会衍生出另一个一行代码知识点,即一行代码为多个变量赋值,示例代码如下所示:! u* k4 D$ ]: f' o& G
8 \' s- h5 A2 |* ga, b, c, d = 1, 2, 3, 4, f1 Y+ s# ]# C: F, ^, F" ^; ^
(a, b), (c, d) = (b, a), (d, c)% U+ P6 Q b2 f5 ^
' h V8 ^: Y" Q# x0 kprint(a, b, c, d)6 S2 `9 [# Y5 L3 A8 S4 m
1
( H9 ^$ Q/ E: Y: |# U0 T( E2
8 g6 h+ U. q" M! x4 \3+ x2 J6 l/ @ ?
4
( l! i9 T' U6 G% I0 K% f% Q* A3 C⛳️ 利用 print 输出日志到文件8 |2 X' ~1 O' ~' X7 M' q
编写代码经常要测试输出结果,因此会大量的使用到 print 函数,而这些结果默认会输出到控制台,关闭程序运行之后,结果就消失了,实践中,可以利用一下 print 函数的第二个参数,实现将输出写入到文件中。% x" Z8 d+ g$ D) [6 T
3 B6 j6 E# c, e6 C4 V' C" M
print("Hello, World!", file=open('ca.txt', 'w')) @$ N# y( U/ q9 c' j! G
1+ h" f8 L; R1 z, V3 s# P
⛳️ 转置矩阵4 @8 T& T+ [* ], K0 X
对矩阵进行转置,也可以使用一行代码实现。& y, J, j0 n+ Q( L" F1 h2 j* Q) t
) {5 H3 ~' C) r, b# m* L& N9 cold_list = [[1, 2], [3, 4]]& d5 o* }3 _: ?8 r. C
. H6 x* m0 }. Q3 ]! C
print(list(zip(*old_list)))
, f! h/ X6 S7 X* C% X, `& p1) P: u# y- s) X$ D9 d, m
2$ ` S0 t; k% ~! d! w5 |
3
" g( c/ G g# }) l3 V但上述代码会将列表转换成元组,如果不希望该情况出现,可以使用下述代码,依旧是一行。* O+ Q7 _+ H# o1 O4 R& P
6 V0 G4 u2 f& n7 d. X+ u4 k" Rold_list = [[1, 2], [3, 4]]
! f2 X, z. g: Y/ P. m/ {print(list(list(x) for x in zip(*old_list)))
: X2 Q, M5 ^- i7 ^6 G* E1 K* c1
5 m- D' U \- I) W' I5 V9 ~# C. L9 Z+ U2( ^ Z; y7 \3 z2 R
⛳️ 一行丧心病狂的代码& D- X& U; y/ _' z4 [4 {* P8 A6 j8 }( r
除了正常的操作外,在 Python 中还能实现一些神奇的操作,例如下述代码:
/ b6 W% A5 S$ `8 `, F1 Y" E- c( }+ K q
print(eval(input()))
+ v8 g( ^, v" @- V, X; o+ T- P; h10 s T& _6 Q- e3 c
可以输入单行代码,然后直接输出结果!
/ \' ?. W8 P ?! O; V. v
* q9 Z, Q. s% b& h* W8 e该代码最佳的实践是一行代码实现一个计算器。
/ G6 I$ x5 }3 N2 y$ `3 M————————————————
# |0 \; {- T# z8 T; \# K版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
; S( w H) X( ~7 ]0 `. t- Q$ _原文链接:https://blog.csdn.net/hihell/article/details/126094977
t4 _9 p+ ? V* \5 h" ?
+ i9 @" q2 H7 e3 Q0 T6 S
+ s# |1 q2 G$ f$ ~8 o |
zan
|