- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563323 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174220
- 相册
- 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 代码0 I+ N; q6 X5 V& ` y7 p, `7 w' r
( R$ E+ w7 e, x. P$ m& Q l- Y
文章目录
7 F7 W% I( h3 H+ ~1 `9 A⛳️ 1 行代码的由来' C- O. n D- b# C1 I: S" j
⛳️ 列表推导式
$ B7 Q) R- Y7 X P⛳️ 合并字典
' z& B% |, n5 d. |8 d⛳️ 列表去重
, r$ E) @- ~7 `: P1 p⛳️ 一行代码交换变量值* a4 z1 b& i2 ?* o" b! A" [9 u
⛳️ 利用 print 输出日志到文件
0 V; L' T, I2 O0 m# i6 l⛳️ 转置矩阵" @0 X, v& j" J
⛳️ 一行丧心病狂的代码
" i8 x/ u2 `2 Q0 W' [8 o⛳️ 1 行代码的由来
' V/ _, a. B i; l: i: @6 n9 v" g9 ]都说 Python 简单快捷,那本篇博客就为大家带来一些实用的 Python 技巧,而且仅需要 1 行代码,就可以解决一些小问题。: z+ z9 |, _2 H. y( B- I
1 S8 g3 E! r" |4 R4 M* X; P
所有的 1 行代码,全部依据标准的 Python 语言规范实现。
* w" L( t4 y7 J* }3 u; V3 h6 W0 q7 p1 A$ e6 b- b
⛳️ 列表推导式
, q$ ^, `3 `5 D n1 B! _. |. F2 x生成器语法绝对是 Python 带给我们的优质语法糖,它可以基于现有的列表创建一个新的列表,而且语法格式简单。
9 a# S5 R# w: {+ ?
x- a% j j8 S, v5 u! O2 lstudents = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]: Z& b) z- j& z" k+ q6 S: _" E
new_students = [name for name in students if name.startswith("橡皮")]" m8 r$ u$ e9 U; |& D4 z% Z& y
print(new_students)
1 v! @. G8 W5 @. Y8 O) |1
+ K$ D) K5 L8 K$ g( s3 C2 ]2
0 @8 ?# T1 G) C* r5 t3
2 B/ A3 k, |# K上述代码的第二行,在原有列表中过滤出全新的列表,而且语法简单,基于该语法结构,还有字典推导式,集合推导式相关知识点,都可以使用 1 行代码完成目标需求,可以学习来。
% d8 h9 i5 U) o S; m6 P0 w( L8 H& a& u
⛳️ 合并字典
) y0 o( x' u/ d0 p在 Python 实战中,有时需要将两个字典进行合并,最常用的是使用 update() 方法,或者 merge() 函数,当然也有工程师使用刚刚提及的字典推导式实现,那有没有更加简洁的写法呢?可以看下述代码
3 I* d- F, F4 y0 Q7 g# c; b6 X$ U. g* ?3 U' N0 [8 W9 S
my_dict_1 = {'red': '红色', 'green': '绿色'}( M% d' V% ]* ?2 r+ e
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}8 H2 S$ m: E8 x; ^, ], H
merged_dict = {**my_dict_1, **my_dict_2}6 y6 D* Q4 C1 p* \( G
: M7 O3 N8 w5 E. x+ V& u' u+ Sprint(merged_dict)
* Y* w+ M5 P: ]% B3 m+ |+ N' g: |& D" M1
3 p. C" f" W% e' S6 b2
7 e# ~$ u( J2 j! j. c3
( z! Y( E3 ?7 X8 T/ ^47 s* R% a6 X8 {1 h4 E7 @. o( H
5
6 T2 [7 c' t- n9 }4 g: k其中 ** 符号是解包运算符,即将字典中的内容拆解,解包之后就可以参照上述代码使用 {} 合并字典,当然也可以直接使用 dict() 函数进行合并
1 h4 @$ K4 [" b& h, F' K f) Q
/ ~) k3 g1 ^$ i0 R! X+ r U- `my_dict_1 = {'red': '红色', 'green': '绿色'}( M9 y# J2 c: L4 m
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}
$ h3 a9 u; p) q7 c. Fmerged_dict = dict(**my_dict_1, **my_dict_2)
, m4 q4 Z1 h- }8 {6 `1 J* A4 [$ \& I4 I8 Y: }
print(merged_dict)2 D7 _# o$ X1 X4 i9 k! Y- e: `
12 O l9 m. E( Z ~+ B
2& K; V+ U3 S) i
3
: A4 }, n' u7 n: V' K `( C1 w4
/ p! S+ ?/ U; b* P# q5
* V% M9 h* X3 G. l7 s2 a如果你一时没有转换过来,那可以使用下述代码进行转换,即使用元素拼接技巧,先将字典转换为 list,然后连接。
3 ]1 |, r5 M6 Q' X0 _3 S w& y9 P4 y
my_dict_1 = {'red': '红色', 'green': '绿色'}+ e& o8 {8 p# p: o
my_dict_2 = {'blue': '蓝色', 'yellow': '黄色'}1 f, w6 B4 |- O, \
merged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items()))( I# S7 W; w: [% Z: W. X
print(merged_dict)
: h: q' u% D/ g; s; d! i17 e, y9 }, D/ V* f; T
2
! O" w. y$ d2 L6 R! F! ]3" z; k; R0 W+ _( L4 d1 H, c
4' n! Q$ W: W: V6 D: D
⛳️ 列表去重' |2 [; R- J( S; V
在实战中,也会碰到列表去重的情况,如果列表数据量不大,可以直接使用 set() 函数去重,即利用集合不允许包含重复值这一特性。
! X8 o( j. ~' x* c& R, a" z
4 X! r* ~5 h9 T% `5 A: Q& e# `0 ^& b" Snames = ["橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","梦想橡皮擦"]
: y3 o3 O" K- W4 P+ M1 X) Z" K$ }& q4 H
5 v" [$ D- l7 f. z9 B* f( ~, A! Cun_list = list(set(names)): e$ j$ H8 ?( [0 i: k4 }; V
5 \$ t. v* C- i
print(un_list)3 M+ w% s: i) r$ @
1
* L9 N8 ~8 R7 V2; \% c( i4 _, x
35 N& U& f% R: D4 \
4) g# G1 x# T9 O: W5 f* D8 Z4 N
5; F P/ d- O8 Q8 D
⛳️ 一行代码交换变量值
/ H2 F( @) h$ p$ @这也是 Python 中的语法糖了,在做排序类算法时经常碰到,使用一行代码进行变量值的交换。( R, t/ g b2 }6 X" U$ ]
8 Z$ ^+ D% I5 \+ A% H6 I/ i3 G; J- Q* X
a = 1. o7 R9 ]+ q9 l8 d6 k7 T- e
b = 22 M! ]4 f1 k* O, H P
a, b = b, a
7 ?2 H/ I& h, M( U6 @
- l* \3 R& ~; H% u9 rprint(a, b)6 a4 r1 P, B* W) E) Z2 w" }
16 p" ~9 \$ f1 g* _- a
28 ~; ]1 w" S3 r* g
3
8 u8 u9 t, ~2 \4
1 V/ f/ {7 q( C9 P5
- e6 \' u0 w* I3 w在此基础上,可以扩展到更多变量,此时还会衍生出另一个一行代码知识点,即一行代码为多个变量赋值,示例代码如下所示:+ J' D0 G0 _2 W- x, Z8 B i
& M1 O' l5 W0 y2 G! h; t Q
a, b, c, d = 1, 2, 3, 4
- E/ D6 r8 O. ^6 E- l(a, b), (c, d) = (b, a), (d, c)8 A3 |8 e J5 z: u' V
; e# h* u5 c" M* o5 E! Vprint(a, b, c, d)) y4 `) T, M; t
1$ w# |8 u& ]8 g) k" j# j
24 _9 X5 q# [: N- C2 q
3
I8 l: _; Q: v1 ` }, V8 K# N/ K4
" \3 m/ q! I5 @" C3 t8 k+ Z) W- H⛳️ 利用 print 输出日志到文件* K* T& m) c: D: g. ?7 ^9 p, J5 q" q
编写代码经常要测试输出结果,因此会大量的使用到 print 函数,而这些结果默认会输出到控制台,关闭程序运行之后,结果就消失了,实践中,可以利用一下 print 函数的第二个参数,实现将输出写入到文件中。: A/ k! v( h4 m, v( u4 W* b# \
7 `: y w4 y( ]/ |. O" gprint("Hello, World!", file=open('ca.txt', 'w'))+ {/ N6 i6 b- k2 A& a4 R: u/ K0 ~+ o% B
1! F& \5 s9 m5 w% |, x1 q( N
⛳️ 转置矩阵
) S1 ]% H$ C- f2 @$ _对矩阵进行转置,也可以使用一行代码实现。4 L/ X* b2 _3 X% f5 R
8 L7 e9 N3 j; Q$ I0 wold_list = [[1, 2], [3, 4]]- Q" V% j3 Z% |6 S. j: u* _
9 H" y+ }8 N% O6 m: x3 W" a
print(list(zip(*old_list)))
6 N" a8 ?8 A- |, U0 H1, @0 n! S1 ^: V4 V! [
2
) Z6 N; \% k f3
/ h+ B2 x- Z% p- A- B! B但上述代码会将列表转换成元组,如果不希望该情况出现,可以使用下述代码,依旧是一行。( Y& z5 z' x4 e; K
. x& U! ^7 U. s% u5 @$ A- s% Wold_list = [[1, 2], [3, 4]]+ O- ^( I5 R$ Y9 P* a7 _0 z
print(list(list(x) for x in zip(*old_list)))" I- R8 P ]$ W5 O7 P! |3 X) J
14 N W3 D3 u* J
2
; _6 ?! V6 z* Y1 K, }⛳️ 一行丧心病狂的代码' H8 A- i+ x8 I
除了正常的操作外,在 Python 中还能实现一些神奇的操作,例如下述代码:, T! n: L( ^. V: |! n1 {
& ^/ W/ l! U/ M( }print(eval(input()))$ m: V$ h9 f7 |5 q. O' t
1
! J+ M' J8 g. `7 g; f/ Y$ Z' M可以输入单行代码,然后直接输出结果!/ c7 M& t9 ^' H. k! B% \7 k( t
w% C, G& i- q. b
该代码最佳的实践是一行代码实现一个计算器。( Q$ |% ]5 o# X( U5 s0 j% h+ \
————————————————$ ~, ?; \& x; Z
版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
6 {" [- p1 a) M" s8 V" R. G! i原文链接:https://blog.csdn.net/hihell/article/details/126094977
* g- L6 R( I8 [ x3 b, Q G0 e* p1 X* h1 B+ u. w3 Y! S2 @
2 S5 @" h5 n) w( G, S |
zan
|