浅谈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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
python生成指定尺寸缩略图的示例
May 07 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
Python装饰器用法实例总结
Feb 07 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
python内打印变量之%和f的实例
Feb 19 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
用PHP编程语言开发动态WAP页面
2006/10/09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
layui分页效果实现代码
2017/05/19 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python修改字典键(key)的方法
2019/08/05 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
销售辞职报告范文
2014/01/12 职场文书
贷款承诺书范文
2014/05/19 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
销售2014年度工作总结
2014/12/08 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
个人催款函范文
2015/06/24 职场文书
大学副班长竞选稿
2015/11/21 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android