* w, W! K' ?( ?* U
+ I' L' c4 }5 N! ]! z* c) _: l 一行Python代码到底有多强大?: H' j5 y% }6 W5 U% D0 Z1 p
Python是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。 2 W! M5 l* g' [' @% @( V8 _ ! M; j9 Q, j: ^1 ?; T8 I4 ? , g1 x2 {8 _. `4 C2 n这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。* X) b3 A K! H# U
! X+ l: n5 q7 | r# W8 k' C+ `( E5 l( C( x2 n
本文,就来给大家介绍10个一行代码到底有多强大!7 f, S& G) Z$ `9 Q; r! C4 C
8 n+ ?# Q- J, R3 e' g) H
% t M) |. D; x& n' S N1. 交换变量 2 u4 O: C- O3 U) [, R( v如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。 4 O6 A J5 m, h5 a$ n0 M3 ?1 U& Q/ m
/ m4 a! ?( t' x
如果用C/C++实现交换变量,需要这样的操作:; m. L6 ~* W8 U+ A7 s
+ ^) \- }7 `3 `( T) ~; _+ C$ b! a; t* h* Y) C# V- |
int a, b, c;$ L5 ^! M0 i# q7 L/ D; j# P" [; n- |/ _
c = a;4 g. m% p! P- K, W1 |1 |/ H4 a
a = b; ! D' O5 d ~, q* Rb = c; # l9 _1 M( }( b: Z3 v4 C" j而在Python中,一行代码就可以完成变量的交换。: s; P# g; I$ s* e, _+ A0 c3 {
( `* O' P: h* X0 v. [
; h1 ^( b2 H4 g5 h' s# a = 1; b = 2 - q+ U7 z, A0 U* x% s2 [; Wa, b = b, a, r3 Z! w. b& \/ K0 \$ K
# print(a,b) >> 2 1 & W0 \6 y2 Z, W+ h, u# R/ S& m这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。 * V. H8 X7 t) ^8 _3 y+ M% R7 R ( }$ o) t. x& J: {6 Z/ Q3 ?" j' r" r0 p0 X8 K. j( M
2. 多变量分配 % Y3 m$ N1 P- ?) Z: p7 a/ E" R如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现: 2 H' k9 i+ }' K9 t2 |& {! N+ P) w
" l' S" _; a8 t: Da, b, *c = [1,2,3,4,5]4 k* e! _: y% Y; ]* {( G( z0 l
# print(a,b,c) >> 1 2 [3, 4, 5] 7 g* V [9 a4 Q( R1 N( {在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。# P$ i0 e4 @6 I* o, E
; [0 a! m$ C' H& j3 u/ _. X
2 V; T" ]- x' c# p
3. 每隔一个元素求和7 A% F1 ^9 H, W- s
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:; @/ `; M" S1 S }# d
% z% w) l) H. |
# m6 W; O2 l$ B4 L- G# a = [1,2,3,4,5,6]2 i4 H R; l$ ]/ C5 x( }3 Q$ r6 W9 v
s = sum(a[1::2]) * O7 G$ x& J6 R. m% x# print(s) >> 12, ]2 D# \! Q' Y* x+ j
这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。8 S6 J0 s6 r F$ r; n* j) z; \
! B! {, h6 H( \3 u/ |# F
& r7 s0 q. `1 V5 \$ P5 x, [5 q/ r, R9 U4. 删除多个元素+ L" n6 {! M: a- X* G5 a; j
# a = [1,2,3,4,5]8 e ?" H: `# O' [( D, P7 q. A( W0 G
del a[::2]. F7 R2 p' Q+ q, T& N F4 f
# print(a) >> [2, 4] 8 j( u( `$ s! M7 J* ], V9 p强大的切片语法也可以用于一次删除多个列表元素。 ' n+ M \8 w+ ^& _4 l, Q2 ~1 U8 Z$ w ' _# X* Z( r9 R% }& F' w0 |. s- k& Q6 f9 R, l6 M$ N( n# j
5. 将文件行读入到数组 |4 e# T1 Q: U7 m* v如果条件或循环语句比较简单的话,可以利用列表达式去简化代码: 7 R& P9 g' b( g8 U; f ! o! f1 a& [! E! @ " m% H. s& b# E' P" |6 [% R; A1 A( ec = [line.strip() for line in open('file.txt')] - ]) m8 R& s/ r/ l6. 将字符串写入文件 : O0 `. Y; N8 P( Q+ W对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件: 6 H' |! e; Y& U! J9 ~9 ?/ a Z3 K* m4 U1 D% I9 q$ e; |1 h
/ T% V3 s& w& C/ `with open('file.txt', 'a') as f: f.write('hello world')& b+ d. [1 L; s% o
7. 创建清单 & q2 D$ }6 w z8 ]2 o; D可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:. |5 s2 P# J3 [
i8 ~4 E5 J7 F4 Z& O& f- o) t0 N Y I. D: G1 u2 i
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']] ! @) z8 i, |8 k2 ^# B' H# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']5 S1 ~- ?/ Y/ O4 s
8. 列表映射 * V/ k$ l" A) m+ x M可以使用Python的 map()函数将每个列表元素转换为另一种类型:/ z# l6 f7 O9 R5 [" K, G* `; {/ P y
' ]: h' W- D# C( @
1 s$ c: h6 O5 g
l = list(map(int, ['1', '2', '3'])) 7 F( {: q: y9 k8 `# print(l) >> [1, 2, 3]" f8 P8 ]: h* z
9. 集合创建 9 N, G7 L9 D) q' j' k8 e* h列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:! t; o5 _2 Y {) Q
0 u/ V) ]3 X+ P1 \, n, L9 w
6 p9 P7 ~8 S; w& L$ c; F' O% y* E' V
squares = { x**2for x in range(6) if x < 4 }) k$ \, h* _# [* e" ^' e
# print(squares) >> {0, 1, 4, 9} 6 B Y, u. C" ~" Z, x; a$ f* N1 C10. 回文检查1 a5 N3 a! j6 Y0 X: ]8 o3 E
回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成: ' j5 k) x2 D1 e8 A; A$ b0 K3 {- h& n2 `9 Z4 O+ X/ G6 W