- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563261 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174201
- 相册
- 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 q6 E: I$ J* B0 j9 {
- j' K- j7 E; z7 }文章目录
( M. |& i- G3 |0 d' X3 ?⛳️ 1 行代码的由来/ A; I5 @3 h4 I! P2 F ? G% t$ R
⛳️ 列表推导式' }1 C& M4 o3 t% P t" q. u
⛳️ 合并字典4 `. ?/ ^& N- |
⛳️ 列表去重 n0 }7 U5 \: F( ^! R1 P4 V+ g
⛳️ 一行代码交换变量值
4 C3 E1 A0 H. x# V5 B' u( r⛳️ 利用 print 输出日志到文件6 O5 Y( x6 h2 Q% J( w' c8 y
⛳️ 转置矩阵5 H$ `- f2 e% N+ k7 F" c" l' Y
⛳️ 一行丧心病狂的代码" L/ P+ p) h5 S- Z
⛳️ 1 行代码的由来$ z' H. H8 o7 F
都说 Python 简单快捷,那本篇博客就为大家带来一些实用的 Python 技巧,而且仅需要 1 行代码,就可以解决一些小问题。
) z9 c4 f0 T7 E4 k& O. x R! q, p3 x3 ?; K; S2 o
所有的 1 行代码,全部依据标准的 Python 语言规范实现。$ ?% c3 j7 i& X. _2 _6 h1 D
8 e9 `1 W! d; K. m" |⛳️ 列表推导式
% M; U- X' q! @: l3 G% L5 Y, n生成器语法绝对是 Python 带给我们的优质语法糖,它可以基于现有的列表创建一个新的列表,而且语法格式简单。
( ^8 P- v' V8 Y4 ]4 f
3 V1 Z; S; n0 x3 P/ rstudents = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
8 w* G5 f, f; ` Znew_students = [name for name in students if name.startswith("橡皮")]5 J1 P L8 W. ?1 d" f% X K" \: q
print(new_students)2 V# r) |, K# [$ D1 l& k
17 r' Q# s0 o1 s* R' j2 @) ?( Q
2
0 w' \4 W) X6 @3
. Q! n2 I6 \; g, ]. @上述代码的第二行,在原有列表中过滤出全新的列表,而且语法简单,基于该语法结构,还有字典推导式,集合推导式相关知识点,都可以使用 1 行代码完成目标需求,可以学习来。( i! F; Z+ `2 J
/ L: k0 t! N0 G" j- k8 N m
⛳️ 合并字典
+ R& r# s$ ~$ G$ |在 Python 实战中,有时需要将两个字典进行合并,最常用的是使用 update() 方法,或者 merge() 函数,当然也有工程师使用刚刚提及的字典推导式实现,那有没有更加简洁的写法呢?可以看下述代码
6 u% h3 s2 i8 `. s
7 ]* g5 b' G' M0 Y* H2 Tmy_dict_1 = {'red': '红色', 'green': '绿色'}$ @, y$ L1 a4 H6 o
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'} _2 f* ]6 h* J) D5 S
merged_dict = {**my_dict_1, **my_dict_2}- D) D3 L0 q+ y. a
+ N2 C+ B$ h0 I! p( B2 wprint(merged_dict)2 n2 F, H3 D9 N" ` m
1
' |! E* L& T6 M2' z; ^: S; g* o4 [# |, u+ f8 U
3
! |7 S; I e' {$ i1 D4; T: ~5 ~. y; C
5) M1 _& l) d5 K2 U( u; T
其中 ** 符号是解包运算符,即将字典中的内容拆解,解包之后就可以参照上述代码使用 {} 合并字典,当然也可以直接使用 dict() 函数进行合并7 a. V) H2 G4 o# P( b
& ~ Z( o& U. o( A( ~+ nmy_dict_1 = {'red': '红色', 'green': '绿色'}
2 i7 A6 ~7 x4 K$ K+ m8 o# Bmy_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
! G4 @8 d) {/ H) r8 C% {. Pmerged_dict = dict(**my_dict_1, **my_dict_2)) R u# a8 }, C: M( W; w0 J
5 C3 Y. Z1 L, T5 x. Gprint(merged_dict)
0 z9 S4 a/ f$ o3 Z18 s( u% n2 ~: d! }3 X/ F
2
% E0 z; o$ j; U. K: b9 n3 d30 P4 Z8 f- `6 l* _2 q7 j
4
" V4 U' s. y7 K3 q# R9 U5
# w+ B: O; t1 s# `' ]! p2 y如果你一时没有转换过来,那可以使用下述代码进行转换,即使用元素拼接技巧,先将字典转换为 list,然后连接。) w9 X6 n+ v$ n3 h+ L0 k6 V% C ]
' u& J0 z( Q& H9 n( h9 [, zmy_dict_1 = {'red': '红色', 'green': '绿色'}
; M1 Q/ [' t" E) `1 J; }9 m* umy_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}; d& H! g% H5 {2 J |$ u
merged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items()))
& H. E- B, s" @3 D) uprint(merged_dict)2 t2 F z/ f' l- ^3 j$ q- D
1
3 W; i& v! t/ O) L/ k2
4 a5 V( L; K7 b& @6 M) n: U3( b* g$ T& {7 `
4+ N6 u- c4 |( [, n! m6 {) C
⛳️ 列表去重
, k8 j# s* n8 w# j在实战中,也会碰到列表去重的情况,如果列表数据量不大,可以直接使用 set() 函数去重,即利用集合不允许包含重复值这一特性。
+ ]: M! U0 n1 F a7 @: n. F& d) q2 D& x$ R: G4 e# C
names = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
3 n* R% d3 ^2 ~6 S0 q8 V1 ?& k
4 O5 s' @6 }+ Q" q. |8 a' Hun_list = list(set(names))( t7 w: {4 p/ Q y8 O
. X7 q! A3 A8 A/ v/ X" Uprint(un_list)" e- n- ?5 H8 j
1
2 {8 h# H0 \* S9 N4 Y$ l$ d29 \# ~, C$ h* v- c/ F. _6 x& F2 t
3
; K( V! [% v& ~& X, ^+ j$ s" Y: T46 ~3 z4 M! R; p8 m
5
) D. h0 Q; N$ \* j: x⛳️ 一行代码交换变量值; ], i2 E+ r8 a3 O' b5 q' M
这也是 Python 中的语法糖了,在做排序类算法时经常碰到,使用一行代码进行变量值的交换。. m* o/ m2 q$ A# O! g0 Z
7 y! V: A4 v/ r0 L8 j$ Xa = 1" x* g" K7 J N6 `# v5 m
b = 2! S! X1 }! ~' v& i
a, b = b, a/ n( J! D2 z8 o R4 R; Q3 ^
% b; w8 b3 K- W4 F% Iprint(a, b)
H, |! r2 [) ]4 t' s# e1/ U9 q) C5 U$ r7 b9 X1 @
2% Z0 S9 F; t" o2 K ^
31 z& ^3 ]1 o9 j, Y; Y
40 C5 ~: x( ~% A9 I( w
5
& B+ I# V( D9 W' L3 E5 p在此基础上,可以扩展到更多变量,此时还会衍生出另一个一行代码知识点,即一行代码为多个变量赋值,示例代码如下所示:# I: H: ]: x+ G. g( S" M# @2 X: g" f
3 o" G0 t9 ]" ?# da, b, c, d = 1, 2, 3, 4% v, R3 x- i4 }6 A3 S' ?
(a, b), (c, d) = (b, a), (d, c)
/ l6 m" j4 }: f$ v9 v& D; G, ^
0 j9 {" _3 g- S* J6 j9 }print(a, b, c, d)' |$ Z0 ]+ ~8 e# B% S
1# w6 C! }# i9 o8 L
2' L v: h9 f+ Q% B
3' ]1 f$ F3 ?6 l
4) [' v' d! P1 _
⛳️ 利用 print 输出日志到文件4 |8 {1 U: c0 J: \& r3 c' g l
编写代码经常要测试输出结果,因此会大量的使用到 print 函数,而这些结果默认会输出到控制台,关闭程序运行之后,结果就消失了,实践中,可以利用一下 print 函数的第二个参数,实现将输出写入到文件中。1 z$ M& m5 P) g; H
& x& f( T. j9 iprint("Hello, World!", file=open('ca.txt', 'w'))
7 y" n2 j" M8 ]% [6 @ c5 f# f2 Z1
" Y$ V3 b; a& X4 `+ i- j6 Y/ V⛳️ 转置矩阵
6 T- n$ g( `# W; s对矩阵进行转置,也可以使用一行代码实现。
: e. C0 N [9 [: }( D% d: ^) B3 _% v( z" a. T
old_list = [[1, 2], [3, 4]]7 Q8 e: V' {+ w: w0 b# N
0 j6 o" o+ [* u$ r1 ~" T) Gprint(list(zip(*old_list)))
# U3 k; o- f7 y1 @% X1" _4 h' \9 |+ p3 j6 S- q
2
: s: @! Y; V5 O. _8 y3! k( M# j) r! D# d" r1 ]3 |* `' K
但上述代码会将列表转换成元组,如果不希望该情况出现,可以使用下述代码,依旧是一行。
+ O* k1 b3 o# R$ x/ l' \7 H9 c# Z+ x5 {% O' j4 o- N
old_list = [[1, 2], [3, 4]]
) S, c1 R) v j. V: Vprint(list(list(x) for x in zip(*old_list)))6 P' O, q- P- J4 t4 L" u0 s
1
2 L" P( y+ K: ~2
0 |/ r3 p: _1 B2 u( d' Z⛳️ 一行丧心病狂的代码2 o8 h y) l% d- I, g
除了正常的操作外,在 Python 中还能实现一些神奇的操作,例如下述代码:
/ X- m8 s; S5 t& Q6 q3 S+ K& ^2 M0 U4 J \2 m
print(eval(input()))
# f# r" t/ t* V( X% v$ u$ t1 T1
0 N7 l3 [3 S2 M1 @可以输入单行代码,然后直接输出结果!8 l3 s( j+ N8 d( E
% w6 t4 o, z0 n3 x4 D该代码最佳的实践是一行代码实现一个计算器。/ B- W4 b$ `% r5 p# q
————————————————
6 ~: l1 }8 a* g版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。1 W1 F- ?% L( Y$ S
原文链接:https://blog.csdn.net/hihell/article/details/126094977! l X; r5 Z! g M( }4 o0 I
; I+ |4 }" {# o& `1 g
7 I1 ^+ w' |, I" g
|
zan
|