浅谈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实现生成随机数据插入mysql数据库的方法
Dec 25 Python
python之文件读取一行一行的方法
Jul 12 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python 寻找离散序列极值点的方法
Jul 10 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
python turtle 绘制太极图的实例
Dec 18 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
如何测量vue应用运行时的性能
2019/06/21 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python sort、sorted高级排序技巧
2014/11/21 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
Python之文字转图片方法
2018/05/10 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
对python 自定义协议的方法详解
2019/02/13 Python
使用python绘制温度变化雷达图
2019/10/18 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Python中return函数返回值实例用法
2020/11/19 Python
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
学习型党组织心得体会
2014/09/12 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书