数学建模社区-数学中国

标题: 一行Python代码到底有多强大? [打印本页]

作者: 杨利霞    时间: 2021-7-8 15:11
标题: 一行Python代码到底有多强大?
" I% g% V' B% Z. P6 E
1 J2 d9 h0 {, z: [
一行Python代码到底有多强大?
1 G( J+ u, q7 E! iPython是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。
4 @# C5 V1 e0 r/ B& S/ h: ~. \6 W* i+ N" ^$ }7 S: q

6 Y. \' a, v% z6 |7 L. C这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。
! K6 q: L- V; p2 S6 m/ S7 m# {4 R  X8 k; o6 o  t
, z* b8 m- R& N* e# I
本文,就来给大家介绍10个一行代码到底有多强大!4 A! k$ W0 S2 S* a& T, [9 u# c+ T
, Y: t, M9 g; ~3 Y% H; b1 m) ]0 W
2 \: R, i9 B+ k1 }$ {5 c2 i5 I
1. 交换变量) O0 Z) g2 r% \* w
如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。+ T; r; x9 N. |1 Z* ]
+ b+ y/ t8 J6 L' R6 N
7 C- ~( ^5 f( f; I
如果用C/C++实现交换变量,需要这样的操作:
0 C/ L- c+ N9 |: p* F" p% e
. b1 i3 n6 l, T+ N- A$ e/ l
, c2 D3 A8 e( S, ^
int a, b, c;
7 g% W( n- V  M0 k% Tc = a;
3 J: }4 ]" r6 Wa = b;
: c2 W1 s6 U% T3 {$ D3 P5 h' Ub = c;
, V  v  U( X7 R' c$ h而在Python中,一行代码就可以完成变量的交换。& u, C7 B% A6 J% c1 o) e
+ w# |4 G0 C! k$ q

, ?' @4 p0 `  A+ x7 I/ G# a = 1; b = 29 k- y9 t% u0 {- P
a, b = b, a
3 k& R% d1 e8 F& O# print(a,b) >> 2 1
8 n, H- l/ b2 J这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。
+ r4 \. L# E* T$ w
- c% Y$ u. C0 [; D: o
$ ~! D! E9 n' N! A" V5 O5 X% e
2. 多变量分配
- |& F4 }8 I/ n如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
7 H! X$ K1 {; \8 E( t
8 ^8 W' Z  w& y+ k8 R

+ Z5 e5 K$ h, b+ Da, b, *c = [1,2,3,4,5]
. s, W- \# O; }6 D& C" Z# print(a,b,c) >> 1 2 [3, 4, 5]) t: T/ ]0 u) j# T3 A0 f
在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。
  j$ S) \8 `5 y) i7 y) N: d7 h* L- g" N3 u1 ~% q) x1 Y
6 s1 h, w$ b* y2 e% ?3 u2 g5 @+ H+ m9 L
3. 每隔一个元素求和3 `1 x/ h% f- A5 s7 [, P
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:
3 Q0 ~! o/ d% w: z
7 G$ E6 _$ o9 `  Q+ E. ?9 {

; b# i1 [7 W+ k9 C) ~2 s0 `1 Z# a = [1,2,3,4,5,6]
) y+ D/ a( ?, w5 R! z1 y7 R" P3 qs = sum(a[1::2])2 U/ p3 P8 y  e2 x: U
# print(s) >> 12
6 |9 x3 C. B4 {7 P! E( [3 Y& J8 X这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。  n2 W7 V  W- G& E( @

1 M% V# U* R7 N0 W! d3 r( n7 V

' N* Y0 r& @; t; ~# G7 C3 R4. 删除多个元素. B1 n3 g3 |# c5 p& h3 u, P/ L3 h6 R
# a = [1,2,3,4,5]
8 x$ O8 q) m- S" X7 Q: Wdel a[::2]+ d) n% U* A) H" g  T1 o! \
# print(a) >> [2, 4]! n( Q4 e6 ^; J. {& ?7 {
强大的切片语法也可以用于一次删除多个列表元素。
0 M, D4 w: @0 N4 }" ~! \6 V8 |5 j% C; \$ I6 y

* {7 ?# I$ Q- {0 M1 ]2 ]6 X5. 将文件行读入到数组
9 t8 u0 Y8 V6 x/ x# Y如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:  B3 k5 _& g: f

3 [' |( f6 m. P, R
3 N0 [. x/ s2 U" m. b! [" x
c = [line.strip() for line in open('file.txt')]
. L, P, g, p. p* X6. 将字符串写入文件: ^2 ^4 m6 Z2 \% O. K( m0 M4 F3 G* S
对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:
7 r( S& Z9 Z2 b1 z2 u6 G
% G3 p! Z! H1 h1 p/ a( b. E4 K
; y# U; o3 e3 i1 O
with open('file.txt', 'a') as f: f.write('hello world')
1 o- L7 }: m1 h% L) ?4 |7. 创建清单0 }+ V4 J3 u. y4 U, k/ x* b
可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:
  d* J7 e. S& Q# D
1 J' H# f; ?8 N% l0 b7 j
! X, x& B6 v5 c; M  n: _
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]: f4 l/ V# B( l7 q
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']4 k( c/ @2 R& B4 o! x* a+ K
8. 列表映射
6 J9 ]' _- X) ~1 V4 M可以使用Python的 map()函数将每个列表元素转换为另一种类型:7 i* e' s" D1 W: T" E

/ g3 V* N% B) M5 [
% |, b& d8 n; Y
l = list(map(int, ['1', '2', '3']))
6 S% \6 e4 W7 a8 k% b# g; e$ r# print(l) >> [1, 2, 3]) I) a2 i- Z1 e) q% Y. f
9. 集合创建4 q- W' N( F0 S1 G: `
列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:
6 ~# W- |" _8 {7 s( V) s) _6 C" p9 t% n) V5 H

6 a& j: V# X* Esquares = { x**2for x in range(6) if x < 4 }1 r. X) a8 m0 i: O  s: C
# print(squares) >> {0, 1, 4, 9}
/ C0 X2 D$ w; U2 f) X- L10. 回文检查. @, y  b1 F, Z; \/ i& D' v9 v4 q
回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:
7 ?' V# r- ?& I: W% Y# d9 N4 O3 d# g! q( l' a" j, H

+ m! d* {( k  s4 |: G  l# phrase = 'deleveled'! T7 G) t6 w4 f* B
isPalindrome = phrase == phrase[::-1]
  r+ i4 c  v3 E7 V/ X5 W/ J% Z0 S# print(isPalindrome) >> true
) Z9 t' w) N5 h8 E8 N- Z结语" R+ A6 {! w' m" n) j) `
进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。5 _0 j( O$ u6 u5 p( b# e+ B

! j, \- F4 R, }% @

! z, Q- K+ S- _提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。0 G' |4 Y- b1 t- P3 U- x
8 j) K% n4 \9 C- G# u

3 b" L0 b% U( V) f6 Z不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。
; L4 Q, ^$ _- \* t! _% D5 X) B5 E' F
6 Y* e4 U% J9 L' M

$ X6 A- b0 o/ l4 w多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。
/ X8 w  @+ b4 t4 T
0 b% r, k4 n5 h- k

/ D7 F  q$ t5 p. Y/ k干货推荐( X2 _$ a$ B( e, [  z' E7 ]
为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:
" s9 V; O; P) L1 v5 D& E$ Y6 d) ?+ a+ ?- ^

) r: c5 ~+ b, D* ?: o  O- K6 ~% ^% {' F, P
, d) e! I1 N( q7 c( @
$ @; g1 U% t0 W  d: n5 C7 Q) f
, b- }; ?5 K( C
所有干货送给大家,希望能够点赞支持一下!  e( w9 k" o, I7 ^/ O

" ]& f/ Z) u# P* Q& T, Q

! I! L- ^$ P2 O5 shttp://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)1 K8 E$ u8 {2 D$ B. P
————————————————, B6 }( {" z( L- t7 a
版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。8 ?8 o% e: L$ I7 v6 p4 \' P
原文链接:https://blog.csdn.net/jakpopc/article/details/118530788
2 `4 i& i8 u: E* J5 \  H' b+ X* k) a8 c

$ M" d$ j2 K. G7 p




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5