打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一些简单的Python编程技巧(1)
userphoto

2023.05.30 江苏

关注

01

善用枚举函数 enumerate()

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
例如当我们想要遍历一个列表时,想要同时获取列表内的元素及索引,一般情况下会这样来写:
seasons = ['spring', 'summer', 'autumn', 'winter']i=0for season in seasons:    print(i,season)    i+=1

运行结果:

0 spring1 summer2 autumn3 winter

这里需要创建i作为计数变量,略显累赘。

而使用enumerate() 函数的写法可以使代码更加简单易读:

seasons = ['spring', 'summer', 'autumn', 'winter']for i,season in enumerate(seasons):    print(i,season)

运行结果同样为:

0 spring1 summer2 autumn3 winter

enumerate() 同样可以指定索引的起始值,例如我们希望索引由1开始:

seasons = ['spring', 'summer', 'autumn', 'winter']for i,season in enumerate(seasons,1):    print(i,season)

运行后可以看到索引由1开始:

1 spring2 summer3 autumn4 winter

02

善用zip()函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是可以节约内存。
例如我们需要同时遍历多个数组。
a_list = [1, 2, 3]b_list = [7, 8, 9]for i in range(len(a_list)):    a = a_list[i]    b = b_list[i]    print(a, b)

输出为:

1 72 83 9

面对数组较多的情况时,上述写法效率十分低下,使用zip函数可以改写为:

for a,b in zip(a_list,b_list):    print(a, b)

运行后可以达到同样的效果。

03

元组拆包

例如我们想要实现一个简单的值交换操作,将x,y的值交换,一般都会创建一个中间变量来实现,例如
x = 10y = 1print('Before: x = %d, y = %d' % (x, y))tmp = yy = xx = tmpprint('After: x = %d, y = %d' % (x, y))

运行结果为:

Before: x = 10, y = 1After: x = 1, y = 10

而元组拆包指的就是将元组内的元素,依次分配赋值给变量。

将x、y用逗号隔开以初始化一个元组,接着交换顺序就达到了将元组拆包到y、x的目的。因此可将上述的值交换代码改写为:

x = 10y = 1print('Before: x = %d, y = %d' % (x, y))x ,y = y, x print('After: x = %d, y = %d' % (x, y))

运行结果为:

Before: x = 10, y = 1After: x = 1, y = 10

可以看到仅需一行代码就可以实现值交换。

需要注意拆包有个要求,就是元组中的元素数量必须跟接受这些元素的空档数一致,否则会报错。

例如:

x_list = [1, 2, 3, 4]a, b , c = x_listprint(a,b,c)

元组中的元素数量少于数组,运行后会出现下述错误信息:

ValueError: too many values to unpack (expected 3)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
春夏秋冬英语美文
Python3内置函数enumerate
英语作文:四季颂歌 The Song of Seasons
season 及季节名词的用法详解
My Favorite Season 2
海词词典:美文欣赏:秋
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服