- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565663 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174922
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
) C3 l# D: r2 W, i. p2 I
6 Y J5 J( w; ~* Y一行Python代码到底有多强大?
/ w& v3 K$ p7 G% R, [Python是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。+ v. a3 L( H O6 A6 \
' G9 A# \/ O3 C( ?
" V, j; O4 |7 Z" Z' V6 E这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。
% S5 S! ?% U# @1 M8 Y" u) e
* m9 u ]$ j/ h" n" x+ {. ^8 ^0 @) G2 b, f; R
本文,就来给大家介绍10个一行代码到底有多强大!* R$ m: j C% W8 ~, e6 p3 }+ d
2 c% f6 l9 t% x
" n$ @6 X4 G! M Z
1. 交换变量 y& k+ h6 f( p1 l" Z; G. M! M6 X8 ?
如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。* b" w( H5 M2 Y
. ^+ S! R$ o- I2 y% v/ v( }) M. W0 U- |) Y" O4 _0 ]6 s
如果用C/C++实现交换变量,需要这样的操作:* T2 q! }& x) `3 ^$ \
6 R ?- i9 L, R5 Q0 u U. i- H2 N: C. O4 G' b9 A
int a, b, c; C/ O7 l7 u9 I3 L# y3 a. P: H- R
c = a;/ f& ]3 Q3 ^0 u% l! [ v
a = b;/ e/ q! t7 {3 W9 ?) O
b = c;$ n; A3 E. j8 Q j, H# [
而在Python中,一行代码就可以完成变量的交换。
: [* f5 z* R1 ^2 N' x0 g
$ R1 c1 }! b+ b% X. R! l9 y! m# q
, ^+ W/ h2 Q) B% x% ^) k% _5 r5 \+ T r# a = 1; b = 2
; ~1 Y* F* K+ M/ Qa, b = b, a
! D0 M1 Y5 w6 x- [# print(a,b) >> 2 11 @; h/ d& f% l" l' C% c$ y* t3 z% @
这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。4 O7 @" {- q! G' @
$ `& q1 N; \: H3 i. k4 Z% u* f9 i3 d0 b; `6 J: R* T9 a' f3 Z
2. 多变量分配1 d, V d& ? C4 y! ~" A
如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
7 ?) ~: S/ U' Y$ _ Q& l+ L3 v0 j7 `' t( H+ R% A/ h: E- B
- f' }2 o) V0 T0 ^4 {- a0 F
a, b, *c = [1,2,3,4,5]
8 K+ d# a F1 A# n# print(a,b,c) >> 1 2 [3, 4, 5]
3 @( N: j1 m) p6 y6 n9 h在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。. i! p, Y8 ]" U
1 x- M) r* `4 z4 ^+ f: w6 X! D
9 `% m# _2 V& F# E3 g& a/ F3. 每隔一个元素求和7 L( W+ y; u7 C& O# |
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:; A0 D; C1 t0 u1 R0 }! `) P
. l8 z) N6 U; a' f' h2 B. l S# N! a3 v2 Z! p7 D/ T
# a = [1,2,3,4,5,6]
! r8 S- d) H7 g+ ~$ W5 U- }5 Ss = sum(a[1::2])
* k. o- D6 w I2 I: q, S; F# U# print(s) >> 12
( y* d, @1 k& }* K" c8 F+ x- i4 B这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。
G7 n Y) A( M9 ^0 y4 X( e, C8 j, C( e. P, U6 u
& w# c' n- }! {* S4. 删除多个元素
4 [5 k* g2 i8 k( k8 ?; Y) h' g# a = [1,2,3,4,5]
7 [; B, J. y5 m+ G z- X; Fdel a[::2]0 E( w' k4 V/ y, n
# print(a) >> [2, 4]
" j/ b$ T/ n9 W V" R强大的切片语法也可以用于一次删除多个列表元素。) t7 B/ s# y" k( l# B6 _
; _/ d& S7 m, }9 H T: ^) `
& W2 i2 z% M2 s9 H9 I! C% P5 d E5. 将文件行读入到数组
, D! H- ^. v) ?' ?如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:% Y6 b8 X- R' B) Y
+ L3 s( }6 w' X U, w" } F( C% c( H7 z" c+ r1 i
c = [line.strip() for line in open('file.txt')]7 z& Z& g% R, @- ?' @$ C& e1 V N
6. 将字符串写入文件: B8 U; o, G/ G* C* m
对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:
4 h# ?5 o) W$ G6 K- B9 f( E) X
. V3 _$ M$ ]+ `. ^7 T' W9 ?
# w8 x- f: ?4 @; L0 P1 C. x/ cwith open('file.txt', 'a') as f: f.write('hello world')* A! e- m2 H1 V) I3 \
7. 创建清单8 \' ?# M3 z: v1 U: w( @, D
可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:. ]1 K" y8 z- V6 E @
8 b1 q: G" @* c2 m# [2 u
5 s' {- Y4 ^; `l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']], h+ }# Z5 s8 K
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']" |8 q2 Z; |& B) d: H
8. 列表映射- J" D( j! ^ z/ D6 T
可以使用Python的 map()函数将每个列表元素转换为另一种类型:6 j( G# y, O- g. l+ M9 ^7 f
1 b3 w2 U( @* z, |
/ p3 \. k8 n H% m/ k, E0 k
l = list(map(int, ['1', '2', '3']))
) K+ D7 J" N! a/ n+ f# print(l) >> [1, 2, 3]* |) E2 h" @1 @) s4 e3 v3 t9 q( b
9. 集合创建4 h. p. D( z8 V; D# H8 D4 X, U
列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:1 P0 G" _0 |7 c3 ? }
) {0 e' Y; U' E) ?
* o; {$ x9 S5 z6 l0 a
squares = { x**2for x in range(6) if x < 4 }; q1 o" P2 J' |4 K8 I" Z
# print(squares) >> {0, 1, 4, 9}6 r/ l, X& ]% C- i
10. 回文检查* N2 D2 a/ n9 k" _1 C' U4 c
回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:% |2 w4 p* w, @9 w# {; g
5 v' d7 L+ c) q3 r$ ]& F0 a" Z4 j) B E2 R+ S% R( M! H& \6 k
# phrase = 'deleveled'
+ I; {% {4 J+ R" _0 @$ W \8 m& yisPalindrome = phrase == phrase[::-1]
! ]0 V+ H# y, Z# print(isPalindrome) >> true8 v) o1 A# E# \! Q- F, {
结语
8 D( E( k0 D% d进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。7 j! f {0 P! w6 J$ M( F. g e
5 Q b) R6 e5 M
8 _. h6 z. H ^* q+ H7 ?
提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。" k" u; ^* ~! |" ~# a0 J
( F4 u. Z7 Q0 o0 i- g9 Q
, R8 F) B0 {5 n5 ?) G不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。: z4 e0 Y# l! x, U! d
+ K' |2 F" B( S' N9 S! P( b" t
% T# g5 d! V4 f, @$ J h多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。
- p4 [- Z, C( y) p) @' ]! P. x4 ~9 n9 e
) B: t/ X W2 _1 {0 m- @干货推荐! O7 h" ^# O$ l% ?0 u
为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:! {3 E0 H6 j' ?$ @% M( ^, k
, x3 J- P5 l# W, V$ _! `
; B1 z. M6 d s7 R+ v, M0 o+ o, ~- ^" a/ s2 A) t3 D1 i# n: W) ~
0 N7 c( ~7 ^7 @2 Q* m; g
0 A5 W# p& w0 `! m S! p. Q1 f: i6 n* G: R( u
所有干货送给大家,希望能够点赞支持一下!& e2 n; }& h: j1 R# O
# h/ e% i; s' g) T
, i3 p& }5 u7 E) @( Thttp://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000). k/ G/ m1 Y! }% T
————————————————
6 F7 n% a" K0 k+ F版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 ~; T7 U+ o1 @+ W; p6 t) c$ ?
原文链接:https://blog.csdn.net/jakpopc/article/details/118530788' u0 B8 Q- ?$ ~2 b( p" @! _
) j, w2 k3 c+ k
! D2 e; s2 H# ? |
zan
|