浅谈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中的继承和多态的概念
Apr 27 Python
使用Python的内建模块collections的教程
Apr 28 Python
简单理解Python中的装饰器
Jul 31 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
Python中的延迟绑定原理详解
Oct 11 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
Nov 28 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
Less 安装及基本用法
2018/05/05 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Keras设置以及获取权重的实现
2020/06/19 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
weblogic面试题
2016/03/07 面试题
网上书店创业计划书
2014/01/12 职场文书
喝酒检查书范文
2014/02/23 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
义诊活动总结
2015/02/04 职场文书
公司车队管理制度
2015/08/04 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书