Python神奇的高级用法总结(3)

Python神奇的高级用法总结(3)
菜鸟
菜鸟
85
阅读
0
评论
2021年10月09日21:41:57 0 85

本文适合阅读对象:已学完Python基础课程,并能熟练使用Python基本用法编程。如果还有一些其他语言的基础最好不过了,如果没有Python基础或者正在学习中,请点击以下链接:

Python基础教程

一、如何编写Python-ful 循环

对于之前学过C语言或Java语言,开始学习Python后,写出来的代码可能是这样的,充满C或Java的风格:

items=['a','b','c']

i = 0

while i < len(items):

   print(items[i])

   i+=1

结果如下:

这段代码没毛病,执行正常,就是非常没有Python特色,而是C或Java充满的韵味~为什么这么说呢,主要有两点:

代码中手动跟踪了索引i,先初始化为零,然后在每次循环迭代时仔细递增索引。

为了确定迭代次数,使用len()获取items容器的大小。

如何写出Python特色的代码呢?微微老师专门起了个名字,叫做Python-ful的代码。

下面来重构第一个代码示例,Python其实无需手动更新索引,可以自动进行,在Python中可以用for循环很好地做到这一点,做法是利用内置的range()自动生成索引:

items=['a','b','c']

for i in range(len(items)):

   print(items[i])

结果如下:

大家看出来了吗,已经比之前好一点,代码也精简了,但仍然不是很有Python特色,感觉依然有点像一个Java风格的迭代代码。为什么这么说呢?因为Python容器的遍历方式非常之简洁,在Python中,for循环实际上for-each循环,可以直接在容器或序列中迭代元素,无需索引查找,直接这样写就可以了:

完美实现!是不是有些被震撼到的感觉?!Python坚持极简主义理念,这个解决方案很有Python特色,非常整洁,看上去就像在阅读编程教科书中的伪代码一样。

注意:循环中不再跟踪容器的大小,也不必使用运行时索引来访问元素。现在容器本身负责分发将要处理的元素,如果容器是有序的,那么所得到的元素序列也是有序的;如果容器是无序的,那么将以随机顺序返回其元素,但循环仍然会遍历所有元素。

2.使用enumerate()升级循环

如果循环的结果需要用到项的索引,该怎么办呢?可以使用Python内置的enumerate()函数,这是Python很神奇的特性,可以让循环持有并返回当前运行的索引,大家一起来看看:

items=['a','b','c']

for i, item in enumerate(items):

    print(f'{i}:{item}')

结果如下:

3. 循环同时获取字典的键和值

如果使用字典时需要同时循环迭代获取字典的键和值,该怎么办呢?for循环同样没有问题,只需同时写两个索引标志即可,一个代表键,一个代表值。

emails={'a':'s@sina.com',

'b':'h@163.com',

'c':'m@qq.com'}

for i, j in emails.items():

    print(f'{i}:{j}')


余额充值 点赞(0)
weinxin
账号+金额发此微信
充值后请把会员账号/用户名+充值金额发送到此微信:tourism52
float ,浮点 菜鸟教程

Float 浮点型

Float 浮点型浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义: <?php$a = 1.234; $...
常见,缺陷 菜鸟教程

常见缺陷

常见缺陷对 MAX_FILE_SIZE 设置的值,不能大于 ini 设置中 upload_max_filesize 选项设置的值。其默认值为 2M 字节。 如果内存限制设...
java,基础,教程,入门,学习,路线 菜鸟教程

Java基础教程1-入门及学习路线

大家现在是不是想学 Java,但又很迷茫,不知从何下手,不知道该从哪里学起,不知道需要学些什么?那么看完这篇教程大家会有一种豁然开朗的感觉。Java的书真不少,网上的Java教程也...
php,alendar ,函数 菜鸟教程

PHP Calendar 函数

PHP Calendar 简介日历扩展包含了简化不同日历格式间转换的函数。它基于 Julian Day Count(儒略日计数),是从公元前 4713 年 1 月 1 日开始计日的...
Filters,Images,Filters,Images,filter,属性,也可以, 菜鸟教程

Filters on Images

Filters on Images filter 属性也可以应用于图像,这里有一些已应用了 filter 属性的图像例子。 html head style div { width:...

Comment list 共有 0 条评论

暂无评论