浅谈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 IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python中协程用法代码详解
Feb 10 Python
django解决跨域请求的问题
Nov 11 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python实现多进程通信实例分析
Sep 01 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
Python request使用方法及问题总结
Apr 26 Python
python Django 反向访问器的外键冲突解决
May 20 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
python实现双人五子棋(终端版)
Dec 30 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实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
php从字符串创建函数的方法
2015/03/16 PHP
offsetParent 算法分析
2010/04/05 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
实例讲解vue源码架构
2019/01/24 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python实现八大排序算法(2)
2017/09/14 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python异常的检测和处理方法
2018/10/26 Python
python如何实现代码检查
2019/06/28 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
Java语言程序设计测试题改错题部分
2014/07/22 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
生物学学生自我评价
2014/01/17 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
大学生就业自荐书
2014/06/16 职场文书
爱护公物演讲稿
2014/09/09 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
怎样写家长意见
2015/06/04 职场文书
导游词之无锡古运河
2019/11/14 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
Go语言安装并操作redis的go-redis库
2022/04/14 Golang
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS