- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564505 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174574
- 相册
- 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 代码6 q3 T8 |+ \" a V' o7 G
- \5 i9 }/ O3 p% L2 i3 j3 j
文章目录
* t. h8 l1 q; O- Y0 o! v⛳️ 1 行代码的由来
1 @' _/ i; O, e o⛳️ 列表推导式2 s. r6 q$ n" D3 p
⛳️ 合并字典
$ o" Y' F0 ]5 Y# v( k6 }⛳️ 列表去重2 ]; q. i5 W0 f
⛳️ 一行代码交换变量值
* g5 D5 E; l) v& W' n! _1 r⛳️ 利用 print 输出日志到文件
' S* g% N$ v. A- E# r8 W⛳️ 转置矩阵 e0 d* s9 R0 s! d+ h/ b
⛳️ 一行丧心病狂的代码
) o( x0 k. b4 a9 U% M& M9 I. _⛳️ 1 行代码的由来
2 C+ I+ I# q- f都说 Python 简单快捷,那本篇博客就为大家带来一些实用的 Python 技巧,而且仅需要 1 行代码,就可以解决一些小问题。( ~. b: ^4 q5 E* I- Y( z
7 j# L7 u9 y. Z B( y5 n所有的 1 行代码,全部依据标准的 Python 语言规范实现。$ z1 T1 `' N4 B" n+ t2 c6 `% X
+ s( I5 v8 M7 [" ~$ Q: g" p2 T0 x⛳️ 列表推导式1 F8 Q5 k* ], ~: r( B# W
生成器语法绝对是 Python 带给我们的优质语法糖,它可以基于现有的列表创建一个新的列表,而且语法格式简单。
" u/ g+ U! \0 Z1 R: T. L! w* f& x' q
students = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
6 t( X! j: C( U% V! L8 hnew_students = [name for name in students if name.startswith("橡皮")]
3 J1 @! V+ A4 z( p. yprint(new_students)1 s1 j, I% u5 C& Z( l
1
- @& y! @/ z& R, Z1 H1 E* |% s2
( { ]7 g) [0 h9 y. H3
+ S3 n) N6 f' P" R7 `. T* |上述代码的第二行,在原有列表中过滤出全新的列表,而且语法简单,基于该语法结构,还有字典推导式,集合推导式相关知识点,都可以使用 1 行代码完成目标需求,可以学习来。% Q) ^2 }0 O- D4 J; s
8 `1 a- l# R3 j ~3 }9 k⛳️ 合并字典9 e i$ X: X/ @. _' s/ f
在 Python 实战中,有时需要将两个字典进行合并,最常用的是使用 update() 方法,或者 merge() 函数,当然也有工程师使用刚刚提及的字典推导式实现,那有没有更加简洁的写法呢?可以看下述代码
' i$ Y1 d( }6 U5 f* l: C( v! h6 o# C8 ?8 w4 u K; B" V
my_dict_1 = {'red': '红色', 'green': '绿色'}! ?% Q7 S$ @5 J+ N
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
% K- q8 l7 c' B/ C5 o. mmerged_dict = {**my_dict_1, **my_dict_2}+ q+ o0 j8 K6 y4 P4 p
1 z* i* |$ G( U# x; w6 r. e. p L
print(merged_dict)
0 U4 u- R2 u' e' s% @) s: {7 R1
) [" n( }. y* a2 y' y7 l2: X3 X% R' G/ K8 r
3. t. u4 P% Y2 K) Z4 a. C
42 ?, L, F9 `8 B6 G
5
4 A, C* u7 ~; P' O& ]6 T+ |其中 ** 符号是解包运算符,即将字典中的内容拆解,解包之后就可以参照上述代码使用 {} 合并字典,当然也可以直接使用 dict() 函数进行合并
8 V7 @( Q: @9 t3 A: l" E. D: `6 Z1 Q% J
my_dict_1 = {'red': '红色', 'green': '绿色'}
0 ] u6 \& S$ G4 ^, o( U2 {my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
) Q! l( F; z V0 @merged_dict = dict(**my_dict_1, **my_dict_2)$ }. ], m1 _. e" G- Y. ]$ r
9 g1 N& y: H0 ?. f! G
print(merged_dict)
2 Z1 R6 Y# M8 }* ?5 [, Y6 ^4 }4 [1
- p& f. ?8 P: v3 L2! G/ i% [% k7 Q7 X, C
3
I" }3 J" Y# t1 |; I8 \/ d4
7 l( }5 G- y7 |' c& p58 a1 n7 R, v6 z# o
如果你一时没有转换过来,那可以使用下述代码进行转换,即使用元素拼接技巧,先将字典转换为 list,然后连接。
6 F0 b8 r' \$ \/ A1 s: V
% t8 @& w, _3 ^4 D# K. k/ E, rmy_dict_1 = {'red': '红色', 'green': '绿色'}, b$ P; M0 ]" |+ v* s1 D
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
( Q( Z# C/ J) E2 z! X5 Ymerged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items()))
: o0 U: W# b/ y; h! m7 _print(merged_dict)0 I, E- y0 l8 l, L6 z1 g' g, O$ |
16 t5 k+ N5 t |# m( ]9 D
2
( c+ m/ X$ p( }; w$ G3
$ ^0 u$ t2 q" a9 r: e. k' ?. S' l4
* G& s7 O7 a$ f⛳️ 列表去重- t T, h- X9 ]5 l/ q" ~
在实战中,也会碰到列表去重的情况,如果列表数据量不大,可以直接使用 set() 函数去重,即利用集合不允许包含重复值这一特性。
8 Y; i/ Z8 a5 k1 k) o* @: G2 S
- g( H5 }6 F; f/ w6 k" T/ [; }( mnames = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]' z+ O* Y3 C2 _8 Y4 X
4 W. g2 n+ |' R8 K- V, x, o
un_list = list(set(names))
: D0 O$ }# T# ?) @: w1 K( e" ]! u' o& R, o( h8 Q
print(un_list)
! v g5 W5 |; h+ v* L1
6 k' }2 W) }/ p+ p; k2' s( G8 _6 c4 ^( B0 v g% ?, k
34 i% M, r) g" Z( N* N
4
6 P2 S' z9 {) j: m5& o! k7 {: p3 ?& P5 a
⛳️ 一行代码交换变量值
6 w8 S% B2 z& P这也是 Python 中的语法糖了,在做排序类算法时经常碰到,使用一行代码进行变量值的交换。/ K: N" G, U L3 Y. B8 u' [; O- X) m. l
8 x6 A( @: C* q1 o- Za = 1
' B, b" c8 ]' }6 lb = 2
# ?/ g. u3 t( I, }! }a, b = b, a6 p' f! A, k2 o% O0 N' p+ N
# g! J' f7 w- R+ ^ z6 [1 u* T" iprint(a, b) B8 ]( Z1 b( b- V% R
1
9 D3 V6 L* d$ v% O2" r- \' h% O/ f8 l1 Q- [
3
4 l9 C2 v% l$ o5 x5 T/ e, n" z4/ Z& Q* K0 |& {; X! T9 o$ I+ V/ n
5! L1 c8 L+ W4 m7 f1 Y
在此基础上,可以扩展到更多变量,此时还会衍生出另一个一行代码知识点,即一行代码为多个变量赋值,示例代码如下所示:
$ [+ o* T& F! J6 o( c) g' `2 L& g) O
8 \3 v0 \6 y( I' N1 j; ka, b, c, d = 1, 2, 3, 4
/ g C' B- m0 F g(a, b), (c, d) = (b, a), (d, c)3 b" p$ ]) Y! E+ p
! o! e8 D/ T1 [; g2 Lprint(a, b, c, d)$ u1 a; l+ j: \7 n
1
1 w# E5 U* |# _0 H- y0 {2# P' h$ s9 S8 T: K' R
3& c; h n' N" [
4' a+ q: y+ O2 ] G5 A
⛳️ 利用 print 输出日志到文件
1 `2 M+ Y* R! l3 r3 E% |# S$ x编写代码经常要测试输出结果,因此会大量的使用到 print 函数,而这些结果默认会输出到控制台,关闭程序运行之后,结果就消失了,实践中,可以利用一下 print 函数的第二个参数,实现将输出写入到文件中。7 k% [$ [" r0 P4 [& f
4 i m2 [' |% O+ P+ K3 h3 J. nprint("Hello, World!", file=open('ca.txt', 'w'))4 I+ `+ K: o2 c; q# y
1! `) w2 X1 ~! A) A
⛳️ 转置矩阵4 n' I1 ]! [) `2 p" K/ a
对矩阵进行转置,也可以使用一行代码实现。
! j$ e$ J3 }) O% Q% y1 W% Z% c5 @
( f3 \- C5 V% B0 s" {old_list = [[1, 2], [3, 4]]
T6 w; g$ T; P
9 U3 c* O( ?5 j6 f7 l) Kprint(list(zip(*old_list)))
T/ ?9 k) K& {" g7 k/ F1$ ~7 f8 i, I+ x! S9 P$ m
25 L+ I/ B6 v. }
3) j/ a" Y; N6 y2 I
但上述代码会将列表转换成元组,如果不希望该情况出现,可以使用下述代码,依旧是一行。
' C% I( v$ B' q: j- U6 p! T: Q, @8 C% n- m! n' r6 T
old_list = [[1, 2], [3, 4]]" n0 f8 x8 H! l
print(list(list(x) for x in zip(*old_list)))3 F8 V. H/ l/ }# m) |4 z4 m
1
) [: W. F* W! f Y- N5 @ s28 e/ x* M$ U) j4 d& @
⛳️ 一行丧心病狂的代码
0 ?9 G' l# ?& V3 l& @: ^5 p. m除了正常的操作外,在 Python 中还能实现一些神奇的操作,例如下述代码:4 S* G( s: M+ J5 h3 }+ h
/ V6 t$ O, p( B
print(eval(input()))# F5 Q+ a; d* Q0 C
1/ n( P @/ G0 T: F
可以输入单行代码,然后直接输出结果!
, l$ h( B; v0 I8 z
0 U V( k- Z" Y6 o' K6 K该代码最佳的实践是一行代码实现一个计算器。
' C5 h* E9 J; U, N3 g————————————————, u k: y& I) l" ~' ^% I
版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。* S, g# L. u* K0 ^3 {. R
原文链接:https://blog.csdn.net/hihell/article/details/126094977
5 _1 v/ ^. K2 C; ~% U/ e, W6 h5 W5 a8 z/ h. o0 _; i8 p% T
* b1 {2 @, D( q) Q' m% `
|
zan
|