浅谈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和Ruby中each循环引用变量问题(一个隐秘BUG?)
Jun 04 Python
Python中处理时间的几种方法小结
Apr 09 Python
对Python 内建函数和保留字详解
Oct 15 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
Python如何安装第三方模块
May 28 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
关于python中导入文件到list的问题
Oct 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
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
PHP实现的日历功能示例
2018/09/01 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
初始Nodejs
2014/11/08 NodeJs
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
Python中整数的缓存机制讲解
2019/02/16 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
社区端午节活动方案
2014/01/28 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
教师节随笔
2015/08/15 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android