- [# ?4 c4 w3 Q$ ^3 p. i如果用C/C++实现交换变量,需要这样的操作: - S8 _" ` c j% {# N4 M% \% Q/ c( c
0 n9 {# l3 i9 {- v
int a, b, c;6 S+ p6 b! {6 |( ]5 x4 Z
c = a; 3 s6 V3 r m( |4 Ta = b; 5 h2 o/ y' R( F Jb = c;, r/ ?' V2 p1 L- y% c
而在Python中,一行代码就可以完成变量的交换。 " ^ N- D" S% _, U$ S( J: w- l8 S% F1 Y5 e7 A! j7 x6 C- y3 s* P
( Z$ d2 t7 y$ M) P5 U0 |
# a = 1; b = 2# |) V, V' i& ?3 N" m5 [8 _" V
a, b = b, a' [! @5 M6 s' Z0 a4 G4 Q
# print(a,b) >> 2 1* g, W1 A I5 ~! _/ s* D
这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。 ; j5 ^- ]2 A @) Z 7 Z1 D3 [1 F7 {; `7 u5 `+ S, u) d 9 G4 g2 I* Z5 Y7 S2. 多变量分配 t7 b9 e# F0 ]! c
如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现: 9 v9 C# A0 p7 u( p/ H) d( G- O( R4 ]1 S/ t
. ~8 N& U) F; g5 j4 }3 y) y: y
a, b, *c = [1,2,3,4,5] D1 C4 v3 _0 d5 M% Z- d+ ?
# print(a,b,c) >> 1 2 [3, 4, 5] ; D* F( B/ i# N在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。 5 o, |( _! Q/ [2 q* | % S1 i/ r3 N% M3 v0 _5 q" n V& g & r3 {$ q h" p: l: b" n3. 每隔一个元素求和 ( q; B5 b0 N6 _: p O& x如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用: 0 e0 ]% j9 \5 G8 c- K) J . ^$ ^( ~0 i2 j O8 i `( {, L7 ], t) G
# a = [1,2,3,4,5,6]9 m$ [. l% n9 M* X0 j. N! ~% ]
s = sum(a[1::2])0 ?5 H0 f5 L1 n n- b- K- N, O; J5 j
# print(s) >> 12. M4 S [, D0 l2 ^6 H" Z
这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。 " h) C% D; v* P8 ]9 s- f! O2 p( |3 W8 h( W
& R, n" G& G/ u# p4. 删除多个元素, Q9 ?, ~) i. g1 r t
# a = [1,2,3,4,5] + }! F. I/ I; `; q5 J) A- }del a[::2]/ k8 m. K7 G" x6 _) |9 q
# print(a) >> [2, 4] 2 E4 k/ A& _, k3 }+ I* x强大的切片语法也可以用于一次删除多个列表元素。 , r7 a4 A) e2 {' E4 k 7 t5 v3 K7 r j8 b' g4 h- ^4 z a1 U: ]8 ^+ K6 ^. R
5. 将文件行读入到数组 9 [4 M4 X2 A3 h, ?如果条件或循环语句比较简单的话,可以利用列表达式去简化代码: 7 t' w7 d K" H* d) Y3 l. v 9 ]0 J2 A2 ~; m0 T' }' I9 o2 V+ I2 u6 f) A
c = [line.strip() for line in open('file.txt')] N* F! ]. z' T( S6. 将字符串写入文件 4 d! O# J8 R( V$ a对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件: ( a3 H/ O1 g9 N. {5 H* t6 {' ~- ~+ Z9 V- c0 q8 Y; B `2 E. N
( O- k' D) Z; zwith open('file.txt', 'a') as f: f.write('hello world')$ z; f/ R' L; O4 o3 ]4 g' l1 `, R
7. 创建清单 / O3 L( P8 `# a) o可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接: : T: M, K/ [' t! |, f: a2 f8 X- o, l" Q
) X/ S/ p( q9 f+ nl = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]4 _' Z8 Z' i% L4 I
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']) c( O- d6 D7 [9 j( c
8. 列表映射 * k: e. M: ?8 u5 C4 v; b可以使用Python的 map()函数将每个列表元素转换为另一种类型:3 @& O6 n& ?% X7 a: a- M7 W
. ]; t/ j0 @+ b( |/ L% ? * I7 s w1 g2 Ql = list(map(int, ['1', '2', '3']))1 b# _* F$ i0 P7 f' q+ S
# print(l) >> [1, 2, 3] 8 d Z. ?1 k( B8 k0 B- O4 l9. 集合创建1 O/ p8 S8 K- o3 D8 x
列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:' t) L& a1 N# h; w, G
9 i$ K! M: M5 K8 z( Z0 J* P 1 y+ N; o- z7 H rsquares = { x**2for x in range(6) if x < 4 }4 z: L- C. {9 D: T9 i5 _( Q0 \5 x
# print(squares) >> {0, 1, 4, 9}; P3 e! D: N% z( l6 U, d# K
10. 回文检查; c* j. q, t& z
回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:% e! I: n8 r" |; N
# C/ j9 x. e' Y) w6 X( k