- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565615 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174907
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
' w* E: [; t# C: j3 u6 X
( }3 c# P9 J) `1 N( n( }; G' P3 z一行Python代码到底有多强大?
& H/ {4 E: [: k, J6 A) c6 a* s/ I# BPython是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。2 v5 g, F+ k0 @% N" u
( U: R3 |5 f3 J* ?; ]1 K* K$ c
4 B; L! ~$ `: j% F* T' Q
这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。
7 y0 t P0 R- y0 \5 B+ r
$ V% a: q( i7 Y/ [4 A9 ]; k: d1 D; j# x) o- I6 `; v" {4 y
本文,就来给大家介绍10个一行代码到底有多强大!
1 `" V4 {0 M4 K) c# v* c3 e5 Z3 V; J+ Y) n+ Q. o$ T* S
% r5 q4 U7 D2 ^$ v1. 交换变量
7 i& Z4 k' ?9 c如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。
7 z+ s% R+ o( b6 Y/ R7 ^
: V* o2 p$ R. S( q }& f5 @* b. |/ `# U3 d) O4 K
如果用C/C++实现交换变量,需要这样的操作:
{4 ?/ n' s0 v. i3 f
( j4 ~# G# V0 a4 Q
6 P* M3 T4 P! M# C6 }& iint a, b, c;
* E2 o }1 g. y, B9 h1 Sc = a;/ d5 K3 u$ M0 Q
a = b;7 h# x* A8 ~ W! _5 W, O
b = c;
$ T' u% z) N3 `1 ?) k而在Python中,一行代码就可以完成变量的交换。
3 ]" C& {: ~ H( M/ h
) T1 M) j5 C# G \% v+ {% r& L3 v; n( {# }/ ~$ |$ J# _8 F m: j' B. X
# a = 1; b = 2
$ q' R8 o1 F' S6 F5 |* _: i3 s0 Na, b = b, a
+ G% F0 O5 V9 z- h) t* M5 }% ?# print(a,b) >> 2 16 {/ T, ^& \, J
这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。
, D3 P8 p* O( z5 A+ T( c
0 m- j9 l9 T5 p; Q4 _9 J2 d: c; o
; Q7 ~5 j3 i# t& c1 Z( [9 ?2. 多变量分配
! D+ P. N/ n4 L' a8 y. [$ @如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
' K2 t5 R7 i( S, Q t
7 t! R+ [/ D5 T8 i
; Y% A& @6 U0 o5 y1 Ba, b, *c = [1,2,3,4,5]
9 ~' w# D% O, \( L, L, W# print(a,b,c) >> 1 2 [3, 4, 5]2 N# s2 H! x3 x& O. J+ \. `
在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。
0 @/ x P7 `8 v+ T5 x; S7 m8 N& h0 p
6 N" C2 ?( F3 ~
3. 每隔一个元素求和6 O0 ?6 V0 g. Y O
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:
' V8 g# v. }# X6 Y7 y: l
: r0 P9 b5 @, l+ ^' c/ E9 m* x; v' B- g
# a = [1,2,3,4,5,6]
, @4 x2 y# }9 Us = sum(a[1::2]), k/ \5 |0 t4 d$ X: _5 Z
# print(s) >> 12
; D( d F, u R8 s这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。
6 i' ^0 G( L! W
( c& R) @, @' H) @8 s. j
. |0 b' c( x9 k, N4 e+ |% T1 }2 P4. 删除多个元素! _# G% d" F& S4 g
# a = [1,2,3,4,5]1 o/ P) W2 b" u& g
del a[::2]: B* T8 a) g, @9 H
# print(a) >> [2, 4]
% k+ _ S. K9 ^强大的切片语法也可以用于一次删除多个列表元素。
: W- r5 c# B1 p4 o1 Y Q1 O
( C1 t0 [. D4 n4 @6 s& }6 J O% s4 Y/ w- P2 O& P- b
5. 将文件行读入到数组
$ z' S( d5 I8 M1 d- R8 X( p$ X$ { d如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:5 A+ q+ x V7 O3 l: k/ L. o
/ D' U8 h% x" i7 K0 `
, @, B4 U/ _- e/ v' ~
c = [line.strip() for line in open('file.txt')]. L& V" T# i9 T Y9 N* ^, C
6. 将字符串写入文件
# Z G7 _, D' c/ r3 U对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:
. i* v! z3 {- K- O( w3 X" |* M) U& c( B2 e) X
2 f7 u _! N/ H. d& ^
with open('file.txt', 'a') as f: f.write('hello world')
* C9 z M( `3 \, _9 k$ s7. 创建清单+ g' P, s" T5 g9 ?6 \
可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:) K" x8 l9 d: v0 X; C7 h" z
, h) ~6 E i2 x6 V' m3 C, A& L: T* ]
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]
$ i1 A% ?8 U7 L1 n& D1 S3 L# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']
7 q9 W c% ]" }) b+ v% o8. 列表映射* q9 `/ A3 F- r9 u
可以使用Python的 map()函数将每个列表元素转换为另一种类型:, Q7 F& u) S; x" l
1 h+ J6 x! u% V5 i. }8 h; l0 f
" F4 s, Z9 b* Q7 s5 G3 N) u& H3 r$ _
l = list(map(int, ['1', '2', '3']))
: H' m1 J$ L) ]/ M# B# print(l) >> [1, 2, 3]
; J$ f2 A; r% _8 H# j' f# `9. 集合创建
3 o; y9 _. T. b; ~" z2 @7 C列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:! S# A6 Y- g' U
4 C. |# \1 k. T) J- {: g! ~
& D N3 R1 d E% L. Gsquares = { x**2for x in range(6) if x < 4 }$ [: f4 R: C, j4 @" E4 j% |; N
# print(squares) >> {0, 1, 4, 9}+ i' `: E* ^- t% U; ~
10. 回文检查8 C( \( W3 O c8 l5 }
回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:
0 A' D, x$ L3 A% V1 j% R( Z$ Z' W4 T; p1 R" m; p1 d
9 `! N- @/ d ~' l' x7 R# phrase = 'deleveled'
' D4 K3 Q" l( V! p7 z( BisPalindrome = phrase == phrase[::-1]
! A9 T7 I( a9 }. D# print(isPalindrome) >> true% N6 U' `- l0 l0 [) u5 p
结语
* _ F2 ]! i Z* t. v进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。
% r, R0 ?: y: ?+ |, y4 n" a& A1 {+ Z$ l; ?: _- ~
$ ]# X3 I4 e# W: V: G
提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。4 J" R- u8 ^ M8 e# ]: `( |
4 a' [( R/ S, i2 u3 ]' d: p. e/ j! J& e0 U' Z
不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。
0 k) P F7 v+ J/ k6 c1 z1 {1 H |3 q# `) ]/ ]% j) z! v
+ {6 Y7 H4 o0 Q& C! ~
多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。
8 v2 Y% D# F, ]" ?) G- C$ H8 }, `/ t8 @& H! N' z( w
- k9 m& k% g! {6 @! K/ X+ F% }
干货推荐
' s9 i, j3 n+ V- h. L/ |, C为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:
; L% }* i. X1 t6 D3 r: \7 s$ }& Z! _9 `& Z+ U6 o3 Y. ~' R; c
- Q( Z" E5 F! c' f, O2 j: D" x! O. [ L$ j
4 M6 _* c$ p$ m, B: v2 N+ b
, `6 g3 D) B8 {" l" [' j8 V$ m1 {, J+ }2 V) U
所有干货送给大家,希望能够点赞支持一下!5 B4 U# O- A% O9 K
" v+ {0 j. O! q; ^
, ]1 w- F' Z+ l$ v" \6 U9 q0 {8 m
http://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)
% [7 y* c; V7 s( ]————————————————$ H( [* |5 }9 s3 g- z& K3 X$ O
版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
/ y! J" ?9 Q4 w9 A" S原文链接:https://blog.csdn.net/jakpopc/article/details/1185307880 i6 B, s* g; n* h7 n
- N# \9 l9 c* e
3 ]$ q+ }' A6 d9 _, X |
zan
|