- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 557189 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 172530
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
; I7 c7 s2 ^! g u+ d
7 D! m8 a& E) N0 K
一行Python代码到底有多强大?
2 c: v7 }8 i4 I* w9 }5 ^8 x& kPython是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。
3 f+ R, Q% K5 r9 R
( Y' F9 u2 ` X/ y. v- n" N N
; h: u0 i* i& V) q* a这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。8 M. |& g# z- z: R$ T5 X1 ?9 B
3 V4 T6 H! z; N# l5 K
5 m+ c/ m$ |9 ?, O# r' i! J本文,就来给大家介绍10个一行代码到底有多强大!2 ^3 z, K$ \6 n) X% L
# D4 t+ z8 K/ E. q3 e
+ `- a$ t0 t; H7 o; L7 D
1. 交换变量) n1 {/ p9 K6 c
如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。; w& A0 t! [! _( \- v8 [- R
! \9 q, a: p# c/ ^( W
2 U+ m; X4 K; q0 C1 t' N% T
如果用C/C++实现交换变量,需要这样的操作:
( M. V; d. A) }. ^( v( }& k! l
1 _+ N% s$ O* Y$ V' f+ y; w
int a, b, c;
$ N3 m- j9 H- ~6 @( J9 yc = a;: f/ C# |2 r, N/ ~1 T2 Q
a = b;0 J9 J V C' V! X
b = c;: M( ^, O, c' ^9 e7 `
而在Python中,一行代码就可以完成变量的交换。9 S k- s+ V: u5 c4 E! x
0 i2 B( d( X( n0 n: t! r' z, M- J& X+ Y4 A& t
# a = 1; b = 23 _5 M( Z; ]4 [7 `5 f
a, b = b, a
! O2 L4 R# \% N8 u% ~3 U# print(a,b) >> 2 1+ z( a* t: L" t! O8 @* e
这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。
# O- u( G. ^1 W* B* ]
9 m8 A. ] S" @4 J$ W/ {/ O0 s( t4 {8 \9 F
2. 多变量分配% k( ] R: |) ]5 a5 L; M' ]5 s C' f; e
如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
! Q! b! q5 o8 B/ v+ O8 ~% j. X3 @
; d" U4 w' h, s) w" @( o( R1 f
: M0 \0 X) F% D( y* c Xa, b, *c = [1,2,3,4,5]7 r. L7 }& _) |$ ?, i. r" j
# print(a,b,c) >> 1 2 [3, 4, 5]' n; [ }) R. J0 ]
在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。) g/ a+ U8 ~, j% C. C* ^
" k9 T4 U2 ^1 @) t2 a# ]
+ i3 W9 c! U4 F7 w- g' s" ^3. 每隔一个元素求和% f2 n4 q1 T2 [& n# d
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:9 K! V, q/ V& D: T
/ v7 |6 |( E7 N# m3 u: A
& R5 w/ w- h, {% p6 I# a = [1,2,3,4,5,6] }" F3 a+ p' A. l/ z
s = sum(a[1::2])
$ p& S; N5 k- Z- J9 G# print(s) >> 128 O# L' G; P% z7 ?4 h( d
这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。% u7 C3 R: n! i4 `- u
K# T5 K9 K0 D% P+ V# L
7 ?6 h5 r/ [% o8 I4. 删除多个元素
% z! `0 |. h. k7 }1 R# a = [1,2,3,4,5]0 U0 D3 N& _" W
del a[::2]
9 c& K, T0 k2 x8 H6 V! y# print(a) >> [2, 4]/ ]/ q/ G' u7 d' e2 B6 W: g6 y
强大的切片语法也可以用于一次删除多个列表元素。
" |4 W1 f( G2 M3 e, }9 F+ e: [, I* z. _( \
+ j D2 e) E" d k) g+ Z- N5 a r5. 将文件行读入到数组
8 ^( Z( ^" M5 P6 R- M% t& v如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:
& H! i8 k. Q ?9 i) H5 H& o. i- w& E
8 |+ n! U' w% Q3 D8 O0 b8 |5 M& S5 I+ A% _7 D
c = [line.strip() for line in open('file.txt')]
& V& N0 s4 a& z$ J, V% ~9 G$ F& a6. 将字符串写入文件& f& b) k p5 T8 b* a
对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:- V2 b: _ K9 {' Y
. W0 r# W6 u9 J2 d4 ~& [# _- m
3 x8 r; g5 a# D8 I7 v, W7 Mwith open('file.txt', 'a') as f: f.write('hello world')
" h9 E9 o" a6 L8 y& H* C$ o7. 创建清单
9 X+ }8 m) I' m. {, c可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:
5 ]* n ^- s B8 X! i
( t; @# ], T" V8 Y: Y# [% m+ m1 E
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]/ U' N$ F3 t q. G3 a
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']4 H. L# K( R$ z0 N; g6 ~2 T
8. 列表映射
/ F7 } V) b5 ~可以使用Python的 map()函数将每个列表元素转换为另一种类型:
. O; d& s1 R o. S, T8 o$ }% Q7 _0 p# l6 {* p3 u# r
2 l1 W% }5 Z' yl = list(map(int, ['1', '2', '3']))% e. h% B8 ?1 X) d8 F
# print(l) >> [1, 2, 3]
0 q6 z) ?$ Q4 l+ _* L9. 集合创建
: S* E- j' @7 j/ Q6 Z& _列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:9 M ]" s1 E( {8 f2 W
1 @$ U3 [9 Z) I' t& H d" {6 j
3 l- Q9 I- m& l, p' z# S3 Dsquares = { x**2for x in range(6) if x < 4 }
3 X% I; ]% P2 {' W/ A) ~# print(squares) >> {0, 1, 4, 9}: K( E6 d: R0 }* o' _6 f2 \
10. 回文检查
1 L+ L0 ^7 W) B5 P4 m! t- i回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:$ i: }3 W+ Y2 y8 o6 c
) y: j$ t2 ]8 j1 W+ _7 N
) N7 i- ?, D7 T y! g# phrase = 'deleveled'0 h- q. R" Q# d
isPalindrome = phrase == phrase[::-1]
6 b# [9 l$ v- W2 g, y& a1 P1 O( v# print(isPalindrome) >> true! l6 A$ f! s' f9 B+ J% T' k
结语
2 e/ |2 I6 M" P! {1 D进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。
! K; E4 [) T4 u% |; M4 J K0 S8 w- @, }! Q0 K
3 ?8 j, x, r6 i) P: k提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。2 a/ V' o* p7 S& M4 M3 f% ]
D8 e) {! @3 {1 w; R5 z
n$ \& V0 r: Y$ b. T; n
不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。" N& H2 m( M& N' A1 p
7 G; Z8 @2 V4 G J% l, d3 D X* A4 @. @
多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。' U# J& o9 {- S/ Q) j1 s9 \% v$ u. u
# W1 v; m$ Y4 J# U- ]& _
( w, V# P) _& k' K+ W' d9 d干货推荐
+ @7 G$ L* `/ l D为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:
4 q2 [2 u; ]) D" Y6 G1 Q5 z4 e+ x1 G5 f, i* {9 v! ^0 p; r& z
0 q3 `% x* V1 E* Q
J, r4 k3 i, C- r5 Q
. K, Z) b0 L, Y1 W7 x9 A, i, a9 R8 T$ H; L& e ~
: L. R/ f/ U; B! g" @
所有干货送给大家,希望能够点赞支持一下!0 X u+ g4 t# q7 |5 B
) n8 {6 M, v- e+ P/ s! ?, w$ A: J* R( ?( a$ J/ o7 _. u9 C
http://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)4 @; P$ G+ M1 I: {6 H
————————————————: z! a* }/ c$ L) H+ s; o& `- c
版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
7 S( Q7 \# a/ k C6 a5 t6 F2 }- B9 b原文链接:https://blog.csdn.net/jakpopc/article/details/1185307888 `8 `7 f: T% u
8 J! z$ I5 T4 M8 N }" M' k3 |9 _, q/ H- Y, [* t7 _
|
zan
|