数学建模社区-数学中国

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

作者: 杨利霞    时间: 2021-7-8 15:11
标题: 一行Python代码到底有多强大?
7 E5 U$ j% Q0 h. w* ?/ ~& w

) s: u# D! ^% h一行Python代码到底有多强大?. M" e8 i* e6 G5 r- ~7 N1 h7 u
Python是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。
" x1 Y" B- F, O. a
* O8 f7 m3 K, L& E" p
6 [4 V7 i8 m. M( @: u
这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。
1 Z1 C2 Q. r5 H6 G+ Q. f
7 o, ~* U( N$ s; c/ r
; d5 ^6 n( P$ V0 B' y0 ]
本文,就来给大家介绍10个一行代码到底有多强大!" i+ ?* R. H, f+ {
5 W& o4 q6 y) H; n
* X  S/ M$ p0 H. T6 E
1. 交换变量
: c# T) o7 a# p* |' _如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。
( {4 e( M/ s7 B& b) v, P3 |( H- h6 ]$ F8 T6 I. C
+ P4 k- t  \9 p; R2 s9 h
如果用C/C++实现交换变量,需要这样的操作:* f& ?0 G# t5 A) |7 x# {
) a. n; t! R# V' d. Y9 `% C
  j% N/ x4 n# O! j  N! E/ Q/ M; E& G
int a, b, c;
! G; H2 b  S+ P2 t$ Gc = a;
' S0 L4 j0 Q% v3 Va = b;3 G8 a2 r8 ?; j
b = c;' S5 {5 ]7 z2 d
而在Python中,一行代码就可以完成变量的交换。
. J* @9 K7 q+ |3 N4 l6 o5 ~3 K$ s1 J) w

( ?& g" ~# t5 Y4 f4 ]1 Z# a = 1; b = 2% h3 z4 D$ r0 Z
a, b = b, a) \5 o! L" R- X8 z+ ?/ f1 d
# print(a,b) >> 2 1; t1 \4 H6 H" G/ W; |
这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。+ s) [  g- E) H+ t& Z; W7 m6 _

& m5 j1 E$ S- D9 }/ D
3 e! F, w  q% D9 N, K
2. 多变量分配
/ h0 ]* D' q+ @# G5 {  o$ {如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
6 l, @' W2 ]0 A3 l
% G. D: o% C2 T4 v) ]

6 d( U8 e* U8 \( S& x% g% xa, b, *c = [1,2,3,4,5]
- C& I" y4 H. u* X4 v: N  M# print(a,b,c) >> 1 2 [3, 4, 5]
, e% ?3 O0 T5 ]( J% t4 J在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。& B4 P$ h4 b5 H) k8 M( z
" _) d" j! y: }9 l) k7 @
: V" f; T8 a! a! M4 G
3. 每隔一个元素求和: G4 ~  E3 f: e1 x1 g1 O
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:7 j* @% q0 i: p7 d8 k

% ^; W$ U2 X5 A4 @
) [2 k# N2 M& ~! T
# a = [1,2,3,4,5,6]
7 l! R$ \) o( ~s = sum(a[1::2])- k) f6 g; s: O" K& o  s
# print(s) >> 12, h2 t5 Q: @$ m" Z- C* \2 O0 e6 t
这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。
6 _: z1 v1 z# U  ^
+ N1 o4 t4 o; Y' l1 C
. L" D  {& b6 l+ \9 q1 k5 `
4. 删除多个元素+ J, {: @; J8 Q( x# T$ A
# a = [1,2,3,4,5]
2 E3 Q. V, w$ a8 H4 [del a[::2], I  G. A& U; r0 p/ l
# print(a) >> [2, 4]9 }3 K$ j. U: @; o& Z4 S" p7 B
强大的切片语法也可以用于一次删除多个列表元素。
! r. |4 U& e' O! R. _, t7 O% O% G; t3 w; b% f$ z
7 _5 @) e' Z, _1 N2 a
5. 将文件行读入到数组/ @* d) d" c3 k  K
如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:7 a, `# G% P8 z

+ N( V4 t: ^- e$ c/ Q

  N4 Z" P( K/ _8 s+ yc = [line.strip() for line in open('file.txt')]
' F* X' ^2 z6 c4 K1 G3 d6. 将字符串写入文件
0 j$ u( U4 e' F- R( {- o对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:
$ z, u/ L/ e$ S" C8 \4 x2 @% n+ @  _/ v" y+ s8 [
+ I, T4 K" b7 D" v% S* d
with open('file.txt', 'a') as f: f.write('hello world')
' B. }; F2 y! ^# m7. 创建清单% G$ Z. }# o/ k2 G( v; ]
可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:2 [4 T0 o- a; m
9 i4 L* E! p, }3 c' o  [& K
1 s* }6 |( Z- r: U( x
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]! G9 d7 P4 _- E
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']
) q2 w6 r4 K" Y8 J; R8. 列表映射
+ y  I1 G, a  K3 @. a可以使用Python的 map()函数将每个列表元素转换为另一种类型:' y3 k) p  l; O# ?  n4 f

% m, O" n# R* r9 q: l, l

0 H2 M! n" K9 nl = list(map(int, ['1', '2', '3']))
* o& R$ c+ h& [5 G/ _# print(l) >> [1, 2, 3]7 p1 R, S; j' K
9. 集合创建
! Z; _0 w/ y) e; w7 h! F) |列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:
2 {/ l  [, b6 d% t+ Z  D2 X/ [9 y! [, l% P4 {
7 u5 X& D1 S8 T+ p# Y
squares = { x**2for x in range(6) if x < 4 }, j- S% h/ o0 E9 R
# print(squares) >> {0, 1, 4, 9}. M+ r) S# |0 Y0 j
10. 回文检查
9 G! r3 v; @+ v* \+ o$ `" x+ R5 u回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:
) o' v5 T' w$ O( W8 D/ `- H, |! B' I, G5 T- g4 t6 b1 r

6 c# F5 j8 ?8 j3 g0 ?# phrase = 'deleveled'
. N2 b' o5 I/ F- @, risPalindrome = phrase == phrase[::-1]
% ]$ [9 ~4 Q( h4 C5 }# q0 Q9 v# print(isPalindrome) >> true
5 {2 K- @3 m; {结语! E$ {! D" C  n3 m
进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。
' X4 z! U/ P- L: D
' R7 o+ ?( v, O- o

- }3 h' j7 S3 `. m5 b提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。
4 g+ l! f  d6 X# l1 B) M/ u" s. p5 K" W9 J
- `4 ~" _6 Z) J- q3 q
不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。
5 F/ `2 Z% ?3 o8 ?# p, e
% U1 [( y6 e4 W8 R4 L$ _% _% }

* b7 S  w5 P) S+ F4 j9 R多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。
. w1 ~8 s0 M' y: i! O
9 P* z! A7 S" H

) B: w9 B, e$ s/ R# U1 ~干货推荐
6 Q4 z+ Q9 b4 l+ v为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:
3 ^% r6 F" u4 e5 p; e+ P
$ f# c. V1 V8 K+ H
9 b8 e" ]. S! l3 s: `* Z6 a+ F% e) H
$ h" i0 e7 J0 C& N& v, @4 e
1 V1 c  F3 f: E! j4 V) H

% s- [0 n# J- W0 c% N
2 \. X- x( J( |1 e+ Q9 k
所有干货送给大家,希望能够点赞支持一下!' J0 i9 E+ ^) N5 U5 R
( ]7 S( A: ~1 a1 q
3 o0 b) B: c# u7 {" Y0 J+ t
http://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)- l3 d4 X8 M. L3 a- S& r, q
————————————————
$ m; S$ T  p- a版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
9 G( j( \/ F" s) Y5 N9 h原文链接:https://blog.csdn.net/jakpopc/article/details/118530788
) X5 f6 C/ [. ?4 ?$ d2 g, r- T8 [5 g) y" L' d1 P0 o
: y6 K' r6 g+ N- H





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