浅谈python for循环的巧妙运用(迭代、列表生成式)


Posted in Python onSeptember 26, 2017

介绍

我们可以通过for循环来迭代list、tuple、dict、set、字符串,dict比较特殊dict的存储不是连续的,所以迭代(遍历)出来的值的顺序也会发生变化。

迭代(遍历)

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
vlist=['a','b','c']
vtuple=('a','b','c')
vdict={'a': 1, 'b': 2, 'c': 3}
vset={'a','b','c'}
vstr='abc'
for x in vlist:
 print('list:',x)
for x in vtuple:
 print('tuple:',x)
for x in vdict:
 print('dict:',x)
for x in vset:
 print('set:',x)
for x in vstr:
 print('str:',x)
list: a
list: b
list: c
tuple: a
tuple: b
tuple: c
dict: c
dict: a
dict: b
set: a
set: b
set: c
str: a
str: b
str: c

判断一个对象是可迭代对象可以通过collections模块的Iterable类型判断:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) 
True
>>> isinstance([1,2,3], Iterable) 
True
>>> isinstance(123, Iterable)

多值for操作

>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
 print(x,y)

1 1
2 4
3 9

生成下标

>>> for x, y in enumerate(['a', 'b', 'c']):
 print(x, y)

 
0 a
1 b
2 c

生成列表

1.列出1到10的平方列表

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
L=[]
for x in range(1,11):
 L.append(x*x)


print(L)[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

python提供了更简便的方法处理这个需求

>>> [x*x for x in range(1,11)]


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2.添加判断条件

只取列表中的偶数

>>> [x*x for x in range(1,11) if x%2==0]
[4, 16, 36, 64, 100]

3.多个for同时判断

>>> [m+n for m in 'ABC' for n in'abc']
['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc']

4.获取dict中的value

一般for操作只能获取dict中的key而无法获取到value,可以利用items获取到values

>>> d={'a': 'A', 'b': 'B', 'c': 'C'}
>>> [k + '=' + v for k,v in d.items()]
['c=C', 'a=A', 'b=B']

注意:由于dict是单个key-value所以在for之前不能直接使用k,v for k,v这样代表k,v是多个key而不是指key-value,所以只能进行计算,但是如果计算的话又必须保证key和value是相同的数据类型否则无法进行+操作

针对key和value是不同的数据类型可以使用普通的for循环,使用print输出

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
d={'a': 1, 'b': 2,'c': 3}
for k,v in d.items():
 print(k,'=',v)

5.list中所有的字符串变成小写

>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

总结

python语法太巧妙了,主要归结于它强大的库,让使用python可以少些很多底层的代码。

以上这篇浅谈python for循环的巧妙运用(迭代、列表生成式)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
使用Python绘制图表大全总结
Feb 11 Python
Python 爬虫图片简单实现
Jun 01 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
六行python代码的爱心曲线详解
May 17 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
python 实现的车牌识别项目
Jan 25 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
Python实现数据的序列化操作详解
Jul 07 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 #Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 #Python
python九九乘法表的实例
Sep 26 #Python
Python实现简单的HttpServer服务器示例
Sep 25 #Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 #Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 #Python
Python实现破解猜数游戏算法示例
Sep 25 #Python
You might like
php批量删除数据
2007/01/18 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
遍历python字典几种方法总结(推荐)
2016/09/11 Python
python简单实例训练(21~30)
2017/11/15 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
代码实例讲解python3的编码问题
2019/07/08 Python
Python pandas用法最全整理
2019/08/04 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
python3多线程知识点总结
2019/09/26 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
Python 如何测试文件是否存在
2020/07/31 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
遗失说明具结保证书
2015/02/26 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js