浅谈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实现端口复用实例代码
Jul 03 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
用Pygal绘制直方图代码示例
Dec 07 Python
python并发编程之线程实例解析
Dec 27 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
Python WEB应用部署的实现方法
Jan 02 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Django如何批量创建Model
Sep 01 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP强制转化的形式整理
2020/05/22 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python 列表理解及使用方法
2017/10/27 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
环保倡议书300字
2014/05/15 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
就业协议书样本
2014/08/20 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL