- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563342 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174225
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
, T8 ]; t. ^0 H% n7 U7 [/ ]7 n
2 z3 b9 f8 v3 J; t* h4 T' A. |
一行Python代码到底有多强大?4 }6 F2 v8 w$ p# F/ |: L% y
Python是一门非常简洁而优美的编程语言,在其他编程语言中需要繁琐的代码逻辑才能完成的事情,往往在Python中一行就可以解决。
$ x* d9 [, K" E' x$ ^& ? v& C# ?% O
) f3 l+ G0 l: c: l6 ~# v
这样,它不仅可以减少开发工作量,还能够大大提升可读性,避免在开发复杂逻辑过程中造成的失误。4 H9 Y5 X! r& d7 O
2 a3 T% ~! Y' E6 x* _
6 ^' y+ u' h6 x5 v+ c' K% D本文,就来给大家介绍10个一行代码到底有多强大!
* f, ?6 T4 j) J2 Y B
. u, Z* }) c( O4 m% l4 Q8 P. N% c3 p, z
1. 交换变量
7 z) I" K# ~ Z4 L8 D8 E- ]4 H& t如果大学学过C/C++编程课的同学,对于交换变量一定不会陌生,这是最基础,也是非常常用的。6 A; w- `; t/ _6 F
* {1 n. H1 V- ` R0 q+ A" r
: i, G$ }: C1 u) I1 w0 Z8 v
如果用C/C++实现交换变量,需要这样的操作:, G7 N4 z+ M j' C9 Z, q; H- q
! S# h& w. |" u; x4 J l. e3 o6 O4 g5 F- {3 \
int a, b, c;
4 o0 ]. E, o; V% I% u% G @2 rc = a;
, M; \$ k; B3 r; W8 R# |a = b;
6 V( g, Z" W' A: Y. v- c2 Fb = c;: X* h2 ?# v( I
而在Python中,一行代码就可以完成变量的交换。
+ K4 _/ U) m& A9 \! i1 T" m p
7 n, z3 e# v f4 @4 X
9 H$ f/ J ?% R. z3 T# a = 1; b = 2; W- v- J! e) ^: b/ F
a, b = b, a7 k. W! h$ l' [( l# _# a; O
# print(a,b) >> 2 1* M. f$ ~ `. z6 |: y+ P7 ]9 p/ m
这样,我们就不需要去额外定义一个临时变量,不仅简单,而且非常直观。- e: h) |- o8 R z
0 d: @2 G- `# {/ J- e2 s6 i
3 T; g6 c( |4 I" P+ j& U2 @2. 多变量分配
/ a& A. s! I% w1 E2 F如果你在分配变量时同时包含多种类型的变量,这在很多编程语言中是无法实现的,但是在Python中一行代码就可以实现:
+ f) W9 p' }, W. q9 V; U% {$ D' D5 O. A' E; W2 E9 ~- G* u# B# y" m
: R. B9 e" b* b0 _. g- n
a, b, *c = [1,2,3,4,5]7 [ n: I+ i, u5 q# V* x# x3 t
# print(a,b,c) >> 1 2 [3, 4, 5]0 B0 P# z0 ` r3 t& z% B
在Python中,可以通过符号*把列表元素分配给指定的变量,这也叫unpacking。+ J1 N* X" ]% m
4 }+ L) R8 v$ H& n/ P) K
! C: H; O; y% b3. 每隔一个元素求和
- L+ G5 z% B: t如果有这么一个列表[1,2,3,4,5,6],你想每隔一个元素进行求和[2, 4, 6],可以这样使用:7 m. k6 [) ~0 C3 {
r5 |4 J) v* \) m0 Q Q1 W2 M& X% q/ m0 T- M7 A0 T
# a = [1,2,3,4,5,6]9 s2 ?3 T$ V" n5 B* q# ~, _6 L
s = sum(a[1::2])9 Q. `; b% }- v, U: V; a7 E
# print(s) >> 12$ g) Y" ~2 P( F. O
这里,不需要利用复杂的逻辑,只需要合理利用Python切片就可以实现,[1::]标识,从第2个元素直到列表结束。
% v' e' ` R6 H7 O( W( g1 D! B) U9 J, j3 f3 A$ D$ d
$ q* x! c9 d1 U1 \3 S3 S; a$ ?) M
4. 删除多个元素
' R3 M4 q3 _1 K2 j5 r* K8 v# a = [1,2,3,4,5]& A8 W# j6 V2 d# V' u( L
del a[::2]
5 Z# X" ]1 T) J; Z1 u" ]1 A# print(a) >> [2, 4]
! F; l! P8 S" V7 i( @! `强大的切片语法也可以用于一次删除多个列表元素。
2 q* D/ Z# e @, u2 z8 o. r% Z' Z3 q1 w8 {
; n5 D+ j, O! G; d4 {2 g
5. 将文件行读入到数组
2 ]3 C: n) ]0 e) G, I% I如果条件或循环语句比较简单的话,可以利用列表达式去简化代码:
/ R) H( a3 }* _5 J# \" }$ s. {* ^
4 W: D. C: N3 d0 [7 ^! Z' R% S( a* Tc = [line.strip() for line in open('file.txt')]. b0 A' J1 ]% Z
6. 将字符串写入文件
, v7 c/ P9 ^/ a4 z5 s; r! [4 [$ O对比于其他编程语言常用的open、close去读写文件,Python提供的with方法更加简单,而且不用特意去关闭文件:8 S# b" A: l& y$ E9 G$ `
; t: i. Q! c& J; \
0 [: f# F, e; o5 a+ t6 |
with open('file.txt', 'a') as f: f.write('hello world')
( E* p+ ]8 I3 w; g7. 创建清单% @, P- s# O) {! h0 C' L3 y$ K- m
可以使用内联for循环从其他列表中动态创建列表。您可以直接修改值,例如,下面示例中的字符串连接:
" ^+ R8 |! G4 g8 _( m+ `
& s; ?4 B4 l4 T; }- ^& T$ w7 I; y. t" ^4 s* ?
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]2 e; G1 `9 D+ u
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']
1 r8 r& ]' `5 t! q8. 列表映射- ?, z* i0 X* }; ]+ L0 s2 M3 I' c6 c
可以使用Python的 map()函数将每个列表元素转换为另一种类型:; v1 b6 T$ J8 y9 Q( D8 v
2 I9 e' b5 j! p9 o
% C4 K8 k3 p3 Ol = list(map(int, ['1', '2', '3'])) E: X/ m$ W$ U5 b5 L, F8 J: B
# print(l) >> [1, 2, 3]8 ?, R0 R% @; q9 Q
9. 集合创建8 h/ D) k. G N8 |5 N6 a
列表达式除了使用简单的for循环语句,还可以结合条件语句一起使用:
' A+ y" K9 [# o2 X% ~; Q9 G( ~5 b0 x! V; K$ i5 D+ B
% E" b; a+ e2 b, K" a
squares = { x**2for x in range(6) if x < 4 }0 y' h4 H ^1 d2 Y, G4 X
# print(squares) >> {0, 1, 4, 9}
1 E- |& l0 w- ?10. 回文检查
; c5 m- f6 v: u! @4 u3 m. |回文检查是笔试题经常会出现的一类问题,简单来说,它就是向前和向后都读取相同的字符,这也难倒了不少应届毕业生,利用Python,一行代码就可以完成:
5 |% d3 C( U7 _, i1 U/ _5 g3 m- u, ? f8 c, n) s% t8 e' ?
' ]8 M: k" o' s7 O/ L! F0 p
# phrase = 'deleveled'( o# Y3 i2 H/ N# u
isPalindrome = phrase == phrase[::-1]4 z0 t2 Q* E# v1 a( S4 y
# print(isPalindrome) >> true
& x1 N# a5 y0 G7 u: ?结语
/ y: O9 p2 S4 K2 b; C. W2 Q4 ~8 ?进阶Python过程中,会涉及的编程技巧远不止于此,要想深入并精通Python,需要我们持续学习,并且不断的总结。
- n0 L* t) X# `6 z4 i4 {: I5 n
# X0 A7 b: U0 ?: u1 P% X
6 P) m# x5 ]6 o/ D. B1 d; n; G$ E提升编码技能最简单有效的方法可以总结两点:“多看别人代码,多让别人看自己的代码”。
8 H9 D& s2 o% S6 B: V; N2 j( r8 j4 ]+ B
7 t( L, {) m3 _ N* ?不同人的思路,实现方法不尽相同,看别人代码过程中,可以看到与众不同的编码方式,可以从中汲取一些优点。
0 @' i( `" m( s0 S2 I) {& E6 L4 f5 n' q# P3 K1 a
# [2 b) }1 _2 ~+ G2 z" D+ Y2 o
多让别人review自己的代码,能够不断的鞭策、激励自己改掉编码过程中的不好习惯,错误用法。
4 J7 N1 t& M3 t( }% x# f. o* Q3 h! U! q+ k
5 @9 T( ~/ [2 }1 ?9 q干货推荐
: {& _. V9 Z3 Q6 z为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:, u" F3 u, Z: D$ g& J8 c
; |/ M' \6 z$ [& U. Y5 @+ X) M
9 h+ s: ?) @+ \
9 K8 W H+ q' i
9 B4 g1 L% K: r
) U' k$ Q, F& J) m# z8 z, N) T% P5 v$ t5 _2 p3 E5 D' R& p' V" J2 E
所有干货送给大家,希望能够点赞支持一下!
) w& c" H4 U' N( n2 t9 c+ c! k
0 @* Q, T- R5 }$ o2 p
http://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)$ {6 Q- J# O9 U# f+ E
————————————————/ s, [5 g+ w l9 W* g& h
版权声明:本文为CSDN博主「七步编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# h1 X# Z( z+ e
原文链接:https://blog.csdn.net/jakpopc/article/details/118530788( b: P8 C$ ^: ~
' \9 v# T2 |3 c- z
0 S/ k# l6 U0 k, c |
zan
|