浅谈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中os操作文件及文件路径实例汇总
Jan 15 Python
Python探索之pLSA实现代码
Oct 25 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
浅谈django的render函数的参数问题
Oct 16 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
浅析Python实现DFA算法
Jun 26 Python
Django框架中视图的用法
Jun 10 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 前一天或后一天的日期
2008/06/28 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
phpwind放自动注册方法
2006/12/02 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
Python json模块使用实例
2015/04/11 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
标记环介质访问控制协议
2016/03/27 面试题
保险专业大学生职业规划书
2014/03/03 职场文书
元旦活动感言
2014/03/08 职场文书
班干部演讲稿
2014/04/24 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
小学中等生评语
2014/12/29 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers