- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564460 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174561
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
- C, A- Q7 _8 K0 E- i7 k9 W+ h0 W: [' `- q# J; N8 y q
一行Python代码到底有多强大?
) C+ l" D; l" UPython是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。
9 ]8 }% ^: f; }# u" Z: b6 m) v I% N7 G3 f: r9 z
- w. Z& h( h# I, S. F' u% ^) p3 T
这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。% B: R& S! F, w- A( H- f$ R0 z
e6 ]# F% a' j
0 ~! p2 p# d Z1 Q3 }本文,就来给大家介绍10个一行代码到底有多强大!
! w( I9 q0 E+ t9 M/ u; F5 `3 c7 j
# |6 O7 ~( |: _: f$ T9 n
1. 交换变量
* C/ P: b8 U a c9 n如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。) [$ L( C. i$ k: G8 V5 o* l% P! ^
) V; n8 ]2 \+ b0 S/ ?* o
1 `; m% V6 n0 p: I如果用C/C++实现交换变量,需要这样的操作:
; T) ?: F/ ]+ f. `
1 L6 E4 O8 B( s( u# l0 `$ Y4 }7 z" t4 F# k5 v C
int a, b, c;
2 F/ t# Y0 ]" I" F) v/ J! @! V& A% @c = a;
5 v: ^ }4 F8 }, B0 K4 L0 Ia = b;: I \, g# J+ g }5 B, M1 Q
b = c;
6 d) y4 W- C: u0 c0 Q( I6 C [+ D而在Python中,一行代码就可以完成变量的交换。0 u4 i x7 D$ r; Z7 _
) ~& x. u k; X+ Z# Q S% M
! c* Y2 q. H) ?+ a+ L( {# a = 1; b = 28 z& Z- E4 ~1 N6 E5 F/ y5 B* E
a, b = b, a0 X2 o, B0 o& @& ?/ C7 f- z
# print(a,b) >> 2 1
- L3 C; ~; s0 z; L, E9 o( b这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。" m0 K- s4 \- w5 {$ B) x
; t" P7 _4 ]+ R% ?6 {/ g+ h7 j1 \8 \0 k, z% k' \: j. R' u4 W. j$ P
2. 多变量分配& Y1 O7 |; s9 N+ v% i: l1 j: B
如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
1 N2 P1 U5 ]0 B. f. I& Q" T9 s) E& [' E g/ I
$ _# T, I1 a3 \) Ea, b, *c = [1,2,3,4,5]
8 i6 E9 P' @7 H; P; G' z$ P# print(a,b,c) >> 1 2 [3, 4, 5]
7 P. s1 |. B z1 I2 u- e9 _# S在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。- j. I3 u0 m) S' p+ n7 W. V! }: M
+ ^; Y* b ~4 @! I' v; R4 a
; o" Y0 J1 w3 _# `) m6 o
3. 每隔一个元素求和
8 K# s9 U: U; @) U" a) o2 d如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:
- o2 L9 k: l) p- T0 \: f4 \/ d
) ]# ^* G( v5 z+ N' ~" S: v8 ~, z# L2 j
# a = [1,2,3,4,5,6]
" P; g. C" i9 n. Fs = sum(a[1::2])8 @' C; h3 S: Z' B5 U# L
# print(s) >> 121 U% }. F' Z z4 ]1 W& O
这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。
7 N3 T$ y9 h; o, k$ ~4 h
( c7 L0 N, P0 Z( ~, ^
! ?9 c9 Q) o2 `8 f8 N: S& u4. 删除多个元素
# W- a8 t- s9 ]5 \3 _! r# a = [1,2,3,4,5]
1 L3 D- F( M9 }0 O/ [2 b3 mdel a[::2]
1 s8 n; a4 Z1 G& O( P! @3 [# B# print(a) >> [2, 4]
) k- Z3 G7 X" T6 o' q5 _2 S强大的切片语法也可以用于一次删除多个列表元素。6 w$ [: n3 W9 E7 d0 A/ M
1 d2 F% \& Q: \6 K" H
: `4 g- l2 V0 W2 w/ f- D
5. 将文件行读入到数组
0 O' r( [) a6 B+ v如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:
4 ~8 O) G$ p" b; @8 w; A1 [" |0 L
3 ^ C2 o3 r. D4 Yc = [line.strip() for line in open('file.txt')]
! j: r8 ]+ M9 t5 K! a7 b0 \6. 将字符串写入文件3 E+ L4 ^ X1 s, G
对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:
) K$ K( z8 l- M7 Z+ c; z# u; g; _) c1 L0 L+ k
/ v' l7 H6 ?) [3 \
with open('file.txt', 'a') as f: f.write('hello world'). x; u1 W1 P/ J: H- y5 _& a
7. 创建清单
+ a) g0 k }" C' W' C0 E可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:
- i, \/ F# I2 z- A6 `4 V2 Q5 ^. t; t2 V: X3 T5 t9 N
{$ |# ~ L- ^0 ~l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]
8 i, T) [- Y- g0 S: \; X& H5 b# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']
% Y3 j* }; j) q, m& c9 j8. 列表映射( _% ~0 ?. I8 X" j
可以使用Python的 map()函数将每个列表元素转换为另一种类型:
0 C( k8 C& F* X4 ?- b* _- O# l ], @; u7 U: E
5 C3 G, V% R5 N! Q/ p
l = list(map(int, ['1', '2', '3']))# U0 }" k* @: H+ x" O# Y0 s
# print(l) >> [1, 2, 3]
! |. @4 ~% E/ x" {3 M; V) t, v+ e9. 集合创建( ]9 `4 K8 q* s% B3 R
列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:
: o x- S9 q$ H P
4 t. G+ p+ Y j, `4 ~9 ?, Y" i) p3 x' |/ P; X
squares = { x**2for x in range(6) if x < 4 }
1 _9 q8 F: G5 M2 S3 u% D% }# print(squares) >> {0, 1, 4, 9}. a# L' x% R. {' g9 P- l
10. 回文检查7 T! t# i8 c9 ~. o& a
回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:9 L' v: x$ n n- P% X
' l+ N; F: G6 }* w+ x- J7 \4 K+ B# N$ Y4 q# w3 k9 S& ?
# phrase = 'deleveled'5 ^$ P9 y* M% v) u! h+ a
isPalindrome = phrase == phrase[::-1]
3 _8 T) g: D, Q# print(isPalindrome) >> true @ `) y/ c! a% a. V
结语
& a7 V3 J- c& Y进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。. @0 O. l% q% L: b
7 }( j8 v! e, _2 f7 I! ]
# M/ X& D1 N: l G提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。
: E# y* C, A; W) P5 ]$ P+ a
I/ x6 S ]) m: d, m
( ?0 ~# K+ [0 ~不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。+ x; ~% r0 P! b+ H' d
7 \; T% k) m0 f6 G8 ]6 R) I5 C5 `! n1 f; L& l
多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。, t2 f3 C8 o6 V8 O% R: E
" O& v# b( s$ i+ }4 ^2 f, J3 U
/ \, R5 C } V( W/ X" y% p+ U3 d干货推荐8 @; V" d) @/ E7 i
为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:: {: O: e6 ?: K$ d9 O, t5 Q$ Y% B
% C& k$ o, |- F' l7 Y
' e2 k. a+ U$ a5 p7 I/ {4 V# T5 j& D! `# {, q/ m4 H
4 Q& N3 D) I: g5 U6 T
% H: N+ `- I5 B8 |2 Z! E7 X1 c( g* y+ T
, ^3 m( P3 ~9 ?1 i! @- X# Z所有干货送给大家,希望能够点赞支持一下!
( v7 Z# S) y6 F" Q v4 {
9 c) b# Q/ S; n5 a! q7 m9 d
. I a5 \% H5 C8 @http://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)
+ _6 d5 t0 a+ T) @ r————————————————( i+ e% \1 x6 P2 \* q8 u+ C; P
版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
" y# d6 F. V0 v原文链接:https://blog.csdn.net/jakpopc/article/details/118530788
! H: F1 V7 G& K! g) q" U% z# d- c9 c; I, S
0 P: ^3 ?( w$ _2 {; [- k& A |
zan
|