浅谈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进程管理工具supervisor使用实例
Sep 17 Python
Python Web框架Flask下网站开发入门实例
Feb 08 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
django2.0扩展用户字段示例
Feb 13 Python
使用python实现简单五子棋游戏
Jun 18 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
基于Python实现扑克牌面试题
Dec 11 Python
如何写python的配置文件
Jun 07 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
带你学习Python如何实现回归树模型
Jul 16 Python
django数据模型中null和blank的区别说明
Sep 02 Python
python脚本框架webpy模板控制结构
Nov 20 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/07/27 PHP
php 删除cookie方法详解
2014/12/01 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
python实现二叉树的遍历
2017/12/11 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
优秀的茶餐厅创业计划书
2014/01/03 职场文书
个人主要事迹材料
2014/08/26 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
SQL基础的查询语句
2021/11/11 MySQL