浅谈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 相关文章推荐
几种实用的pythonic语法实例代码
Feb 24 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
解决python opencv无法显示图片的问题
Oct 28 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
python实现年会抽奖程序
Jan 22 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
如何理解python面向对象编程
Jun 01 Python
Python采集股票数据并制作可视化柱状图
Apr 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
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
运动会广播稿300字
2014/01/10 职场文书
公司内部升职自荐信
2015/03/27 职场文书
九年级英语教学反思
2016/02/15 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫
vue动态绑定style样式
2022/04/20 Vue.js