- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564904 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174694
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
- S# w% p6 @1 A, ^6 f% P, {
1 e2 a4 g4 M5 B/ J& Y3 z8 V2 T
一行Python代码到底有多强大?
8 X. f4 Q1 c" h6 I+ Y/ g4 wPython是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。% l1 L9 ^) R5 u" d
% r( m/ D4 W( J0 v. U4 b+ V* b4 ~0 o5 }: Q5 |0 d* |) X+ l m
这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。
+ @4 p& q$ ~+ t+ w, g
1 Q! Z8 ^/ o- ]5 ~$ A$ Q D1 L6 G* D. q# ]8 v/ o
本文,就来给大家介绍10个一行代码到底有多强大!' d4 w. o: V( e- `
, v+ n( Z8 J+ \! r
8 D/ _% e: p7 q3 l; r+ y9 ]% G3 v1. 交换变量, W8 a$ b2 Q( r/ P& h, U3 ~
如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。( i+ ^: M2 m6 K4 ~) O
2 w0 L, m4 U, Y3 z
7 w, O+ Q+ [: C) r如果用C/C++实现交换变量,需要这样的操作:
/ ~4 M! X1 o' b3 O& F
5 J. |7 s5 P; \2 W% o4 \2 B2 z# s
% X% K- M" E0 m$ Oint a, b, c;
- B2 p7 S1 h, C7 Bc = a;- F* F9 z. ?3 ]& l/ Q/ c$ r
a = b;
a% Q* r7 \. R. e7 D! L2 I8 u. _b = c;
# P* @& N% U5 o6 } p; Y9 z而在Python中,一行代码就可以完成变量的交换。* Q k! b, j( B) J# D6 c
' L5 f% I* u9 L, `
% w2 N$ q, {% m# a = 1; b = 20 z1 t5 A6 y2 L
a, b = b, a) i/ ^9 h6 `3 K* j J d& _) F
# print(a,b) >> 2 1
: n: U' P# @. T0 L这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。
2 a* n$ Y( V% A5 i2 u6 U3 ?$ c4 [6 g
' i2 o' l% K) K0 _- I1 A- y( G) h
2. 多变量分配
! s0 l2 B% V; n3 m如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
0 Q8 t, @0 ~, a! Z# f# D. M6 {& q( \
/ p- S8 z) `5 v$ S0 V4 ?a, b, *c = [1,2,3,4,5]
$ \- h$ t' e- S2 u9 r# print(a,b,c) >> 1 2 [3, 4, 5]
, A, N% O: Y7 E- F在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。
" H% F* l% R0 ?$ h6 ]2 a6 F$ g. t) o! m- Q! U1 H
! B2 {8 i& o9 j) {- u% ^- q% Y3. 每隔一个元素求和0 P$ Q2 f$ z" v! P7 x: s3 A' D
如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:( p/ t" f9 U" B+ H; B7 B
% a: U' H/ \* Y+ v* G9 |. V" {1 R3 D: [5 X2 R4 K! o1 W j
# a = [1,2,3,4,5,6]7 ]; Z5 j% e& [1 m
s = sum(a[1::2])
0 w) q+ }! R9 W o# print(s) >> 12
4 O* V( {5 _8 y这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。" F. E6 v2 T- {8 d8 q2 m- D
( N& o6 F, M- D% i6 B7 {
" i# f2 D# F5 C9 T8 v& P% a4 O4. 删除多个元素
5 i% [# H5 d$ g9 J7 g" K5 P7 F# a = [1,2,3,4,5]+ {2 ?$ x# G' y4 M+ o6 t$ ]
del a[::2]
2 l! ]+ J4 Z6 o" W& [7 a# print(a) >> [2, 4]
! E6 }$ z$ {( O强大的切片语法也可以用于一次删除多个列表元素。' g/ M/ Q8 w ^3 T$ X" A
( b8 w! |% V, f: C) r
2 S; i% t2 U* d' L5. 将文件行读入到数组
7 A, y$ @" S0 E( \ c4 q+ _+ f如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:0 U6 G4 ~/ n; _# y% E2 \
; P. I+ o6 K5 v; j! H d0 h5 h q
3 i* c- H3 ?4 j, f' Q. X' wc = [line.strip() for line in open('file.txt')]
3 c9 A' K, L4 C9 Y6. 将字符串写入文件. x2 U& y/ D, l. d/ V7 I0 x: Y0 u: x8 N
对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:9 v& M7 p! ~5 Q
. h( h$ l! |; Y# O9 e6 D I
+ } R8 P/ e, W8 vwith open('file.txt', 'a') as f: f.write('hello world')
: A9 A. v9 v4 K, ?" G5 d7. 创建清单
" q0 P- x% Z4 Z D可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:
; q/ n* f4 W2 G4 z! V" s1 g
4 {" q) a8 c% @+ W* c% @3 B7 e6 p1 Y
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]
7 A* b0 g% b- f$ R# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']4 t) B0 ?/ F, J7 z
8. 列表映射# E2 {# | Z' D$ r
可以使用Python的 map()函数将每个列表元素转换为另一种类型:
4 M/ C; y7 w/ q2 \
7 h @5 T3 l7 w. D. ]# Y' J' o3 z8 E/ ?3 L: B/ r% ~. i
l = list(map(int, ['1', '2', '3']))! ^$ }1 x# Z# {$ u: J
# print(l) >> [1, 2, 3]$ J1 b1 [' m/ A" M% ^( j
9. 集合创建, V: n8 f3 K9 \2 a
列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:* n `& V, e2 |" r# y7 F! v6 z
5 D" D F. b% s2 h
9 M' z) a- ]! G+ L" W7 csquares = { x**2for x in range(6) if x < 4 }9 W: G5 o( k( H+ |7 Y" H
# print(squares) >> {0, 1, 4, 9}
! L, N& @- Y9 R5 g$ ?10. 回文检查
* y, P: U( h+ J# E回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:
& X! K7 Z4 j- B# @% L3 C2 g/ f6 j4 k1 ]& @0 Q. g2 x( U
5 n$ D5 _) x1 c: S' c. u
# phrase = 'deleveled'. c+ }# l% C! ]
isPalindrome = phrase == phrase[::-1]
. s7 l* {/ a( S; @1 b# print(isPalindrome) >> true$ S1 v* g/ r2 F7 n3 f
结语
# y5 ?/ B5 X8 K: }: b7 \) }进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。/ L& l- h9 v5 k C- r4 q1 |! g, V
' m* K U5 h8 X, u
: p3 V: F8 w9 d( Q6 Z; X
提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。
- d; ?( x# I0 \- I5 j& |! s3 \5 S2 }8 g! L& w% K' d. y
) G9 e6 F) o+ {不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。
9 g: J2 K' W% X- L
7 B5 u+ s x1 V
8 k1 x, ?9 r1 C$ a) v多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。
; ^, t# t# k. k% ^/ ]7 {5 b
# {6 k5 Z0 V. t. R) |' D8 D: s7 u5 U3 f" j0 o
干货推荐
/ D1 d. F* u1 O4 j为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:
' s5 g3 N/ d9 R# S) S% v+ w7 ~+ m' M) p; D$ i+ i
2 `. b) b) t& L* {
8 K. |. ]7 }* m# k# Y( W1 L+ R6 m- w
! h' r+ L+ `5 [+ D6 ?. Y
3 ~& H) c+ g7 P; a' S6 r% [. Q/ O' }, t7 n
所有干货送给大家,希望能够点赞支持一下!
, d1 G- k4 p, I# K- l! [! h5 M! A. T! w6 O" j
( U! ~$ F0 O8 z: T" f8 J! ohttp://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000) i% w+ D n7 R9 l2 w( Y
————————————————
7 L8 i! b2 {' F* T/ I版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% G ~, Y1 L( f8 [; D; z- V) q9 P2 \
原文链接:https://blog.csdn.net/jakpopc/article/details/118530788
9 V& ]% H2 f/ ^% o( Q
- W2 x7 u; H; m$ |5 u1 A
# H% F: b0 u% ?8 T+ i8 Z) i |
zan
|