- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565611 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174906
- 相册
- 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 代码
* i1 ^3 l0 k H; \5 s z- M D% r5 J+ }
文章目录3 V5 q; X# G$ P/ }5 \) k1 f
⛳️ 1 行代码的由来
R O" s$ y$ Z3 U% U( p⛳️ 列表推导式
, [* V) [" {2 b: O1 n% T& h⛳️ 合并字典
/ t7 g; j' |+ J5 r⛳️ 列表去重
$ _+ w( K7 a" y⛳️ 一行代码交换变量值9 x# t, n% \$ C4 f" d
⛳️ 利用 print 输出日志到文件
; [5 \* J. r: \% ~9 y⛳️ 转置矩阵
' T+ C7 z( T M1 S⛳️ 一行丧心病狂的代码' r9 ]( t: ^, N! }0 S ?2 R
⛳️ 1 行代码的由来
' W: L d7 m- q都说 Python 简单快捷,那本篇博客就为大家带来一些实用的 Python 技巧,而且仅需要 1 行代码,就可以解决一些小问题。
, j1 e* \) ]* }8 O' n! m
! k# Y7 e% e/ ^3 g4 K所有的 1 行代码,全部依据标准的 Python 语言规范实现。- u. R1 S) k6 `2 X' }& z8 c8 C9 O1 D
r* O# H+ h$ Q9 P$ ^1 }% { ?; }- p/ S
⛳️ 列表推导式
- Q" j+ p: ]5 i1 n* K( x生成器语法绝对是 Python 带给我们的优质语法糖,它可以基于现有的列表创建一个新的列表,而且语法格式简单。
& C- Z: D; _$ X% C- U* q
" g( m. {0 l; ?' e/ ?students = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]0 O1 z. d, }: H" j
new_students = [name for name in students if name.startswith("橡皮")]
c- K5 S; c' o) f1 H0 U, _print(new_students)
3 U! n" x$ d! m+ f: v10 g% A+ N6 U# y* h. `: s! Z
2
0 v( h, v: X7 ^4 N. H, ^3
; s" z$ y. F) f$ K7 v" B上述代码的第二行,在原有列表中过滤出全新的列表,而且语法简单,基于该语法结构,还有字典推导式,集合推导式相关知识点,都可以使用 1 行代码完成目标需求,可以学习来。
' ^7 b& F6 s: T9 Z( c. @; ]" r3 Q( [' _ F9 J
⛳️ 合并字典
# L* B! F* X* F/ v+ _在 Python 实战中,有时需要将两个字典进行合并,最常用的是使用 update() 方法,或者 merge() 函数,当然也有工程师使用刚刚提及的字典推导式实现,那有没有更加简洁的写法呢?可以看下述代码
8 v6 R5 [. {. y$ r, u: r0 c& M* B# d: \4 ]# h
my_dict_1 = {'red': '红色', 'green': '绿色'}4 ~$ T: `1 k& U9 @/ t4 |. n8 o+ Y
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
9 A& c% w# O1 u: _9 y1 N5 S/ Imerged_dict = {**my_dict_1, **my_dict_2}
1 {, z. A4 j+ l7 @" f6 X( z ~) o9 \2 p2 s
print(merged_dict)9 a5 |! x8 x, y; w$ R
19 k* y# a2 h2 }& u+ l
2
1 B9 n! B0 y6 P- ]1 m: I9 o3) ^( I: i/ A8 L& G/ W
44 X8 }$ y* K+ z& r+ c
53 O: K$ v* S W# m8 N1 P
其中 ** 符号是解包运算符,即将字典中的内容拆解,解包之后就可以参照上述代码使用 {} 合并字典,当然也可以直接使用 dict() 函数进行合并
7 F+ ^/ S. |; V ^: }9 I4 L' ?- _
$ p9 q5 g+ n8 {6 g X/ b% L: i. i9 |my_dict_1 = {'red': '红色', 'green': '绿色'}. |1 W6 T0 w2 t4 a! S# t6 C/ J6 Y5 m
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
! z# g; _7 s5 V8 c. W& ?4 Cmerged_dict = dict(**my_dict_1, **my_dict_2)
9 G% s9 W3 `1 V5 f. m- N& Y4 n" a5 \0 R! T6 c6 D- N
print(merged_dict)
' J; K# q! L \$ e& e6 \7 |( J8 ]12 G- X+ r- X# Q4 G: ^* a0 x4 T
2
1 `( W+ C8 t `9 Z9 ]% O: _; y9 x3
4 y9 g3 m4 K5 w& f: B& f6 |4- _: x1 e' j# o- G, r% y
50 |4 `( m8 B* z3 S
如果你一时没有转换过来,那可以使用下述代码进行转换,即使用元素拼接技巧,先将字典转换为 list,然后连接。. m7 ]% Q0 ]; m. O, u2 o6 I
( C4 b/ N$ K# E6 T- v) Q& Vmy_dict_1 = {'red': '红色', 'green': '绿色'}
" Y( F0 d+ V! v: Z. q8 Tmy_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
$ ]) n: ]3 |9 h6 T/ M6 P/ r jmerged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items()))! H& ?" x1 z5 z! T: P' O
print(merged_dict)
) P; D( b+ u: p$ s! t+ l1
e$ E }" L3 Q, N! D2
, _8 \% [/ o) ~3
, Z9 H5 Q) `- S# i' h44 s5 H1 Y) Q9 X5 d8 Q( K( z
⛳️ 列表去重
) G( j7 t2 A! {- p( n在实战中,也会碰到列表去重的情况,如果列表数据量不大,可以直接使用 set() 函数去重,即利用集合不允许包含重复值这一特性。/ n) ?1 L# e" t/ Q
% k; d( \) f& gnames = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]' d9 q' ]6 v/ T% s( X* d. Y
0 S0 M% ~! V$ D: x: Z/ }0 qun_list = list(set(names))
4 w. C1 V. z5 K. X' o. u( K5 z5 f* A% k8 |
print(un_list)
) K5 H+ ~ g Q. Y0 U& i1
, s3 w" n9 q# Q2 A9 ~2+ I3 q ~9 ]+ V1 Z
3 v8 I2 T7 \( W% P' J! Z( P( y
4) @5 P- m8 y; j4 \- Z' w. `
5
2 }" h/ o! |* j; S+ p+ I⛳️ 一行代码交换变量值
) _8 P. m9 C# R) H0 Y- J" B这也是 Python 中的语法糖了,在做排序类算法时经常碰到,使用一行代码进行变量值的交换。5 V& s" [+ Z% N
8 E" b$ ^. h5 D4 B8 |8 }& l: `& V
a = 1( b* i* I: |+ K! Q# O6 A5 s
b = 2) R4 W7 e* ^2 a2 Y4 E: Z& o9 i- ~
a, b = b, a
, `$ |9 `0 ]0 E) T' k, s; e/ J) t' ?' {3 x/ q
print(a, b)/ N9 ]- F, u4 h2 Z& F
1, L4 P* Q6 q+ \
2# {' |+ ^+ s9 v& \4 g
37 o- l6 G% L5 Y l- G, `. F
4
, F# _7 L1 ^% G: d# {) k; C5
' s9 m+ N0 o; a& w1 s# {# R7 ?在此基础上,可以扩展到更多变量,此时还会衍生出另一个一行代码知识点,即一行代码为多个变量赋值,示例代码如下所示:
9 {7 Y+ E% |: [
. [" R2 _% K3 L8 Va, b, c, d = 1, 2, 3, 4
, W* c' o J6 |, J0 S, b(a, b), (c, d) = (b, a), (d, c)
) G3 \7 Q1 K L1 y. i6 N$ Z9 s0 ^3 k4 ~/ f. Z; g( M
print(a, b, c, d)% M% Q/ l, z& W7 |4 T' S
14 ]3 k6 m" R5 A: B2 H% A0 r; v3 {
2
' L+ U6 r' ]4 [$ W b, [! `4 ~3" k) T3 Q2 f8 z; H8 C
44 z' P$ z& G2 N) y* G
⛳️ 利用 print 输出日志到文件9 R- d) O% F: b o5 p9 z
编写代码经常要测试输出结果,因此会大量的使用到 print 函数,而这些结果默认会输出到控制台,关闭程序运行之后,结果就消失了,实践中,可以利用一下 print 函数的第二个参数,实现将输出写入到文件中。
' W6 _# S/ n3 Y3 w) m; Q" i8 g6 j3 D" e7 O
print("Hello, World!", file=open('ca.txt', 'w'))
& S/ R+ [9 G C1$ y6 I( |# O2 t8 |+ F% Z
⛳️ 转置矩阵
& U, g# i7 l" G5 W- A9 O- `) J对矩阵进行转置,也可以使用一行代码实现。
+ Z* R2 |+ _- e7 m. b
9 i, ~5 s* g+ j9 n$ K# L! gold_list = [[1, 2], [3, 4]]3 G, }6 M+ U3 e0 P) E7 O
9 @6 }# ]3 I' s& Y. Z; T R* zprint(list(zip(*old_list)))
1 c) X. h6 A! S19 {) _3 w( R! |3 a' T; C; p/ f; s' N
2% f4 C5 w% I* Z$ z/ B4 U
34 `+ w7 F* L0 r3 ^" j
但上述代码会将列表转换成元组,如果不希望该情况出现,可以使用下述代码,依旧是一行。0 }2 A" i( L) @9 \
1 T2 b9 t* }+ C* ^
old_list = [[1, 2], [3, 4]]) b2 K0 M& S( o6 _, Z9 t1 x
print(list(list(x) for x in zip(*old_list)))
+ c: w0 D0 M' F. c" k& T' M1 A1( ]0 g: _9 B7 @# o( b3 S6 R
2
, F; w: ]) j% ?2 J2 M⛳️ 一行丧心病狂的代码7 C0 Z9 T$ G# V0 ?1 \, N
除了正常的操作外,在 Python 中还能实现一些神奇的操作,例如下述代码:! u% @8 t8 T2 Y) G
5 _6 s2 H" o7 Pprint(eval(input()))6 _/ F; }2 t1 l/ }
1
" W2 ?4 L, H, c9 w" t可以输入单行代码,然后直接输出结果!
2 p6 C, U: ^& v. Q6 s3 L% Y
; T# s; F0 _) d$ p3 ^该代码最佳的实践是一行代码实现一个计算器。& }* [( I& H! m4 y8 k
————————————————# K8 p; ]8 I2 [& X
版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
& J) q, K. v/ o8 p. h原文链接:https://blog.csdn.net/hihell/article/details/126094977- [) {5 r+ j0 ?
_3 h# A, e6 s/ `
/ s) M" U, u% d' k2 J8 ^) U5 d( l |
zan
|