python for循环巧妙运用(迭代、列表生成式)
200 ? "200px" : this.width)!important;}
-->
介绍
我们可以通过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)
False
多值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
生成列表
#!/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可以少写很多底层的代码。
|
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
python for循环巧妙运用(迭代、列表生成式)的更多相关文章
- python高级特性:切片/迭代/列表生成式/生成器
廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...
- Python学习 Day 4 函数 切片 迭代 列表生成式 生成器
定义函数 def my_abs(x):#求绝对值的my_abs函数 if x >= 0: return x else: return –x def nop():#空函数 pass#占位符 参数检 ...
- python 几种循环性能测试: while, for, 列表生成式, map等
直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/07/24 16:23 import itertools imp ...
- Python开发的入门教程(九)-列表生成式
介绍 本文主要介绍Python中列表生成式的基本知识和使用 生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >&g ...
- python基础之协程,列表生成式,生成器表达式
三元表达式 #三元表达式 name = 'alex' name = 'egon' res='SB' if name == 'alex'else 'shuai' print(res)#输出:shuai ...
- Python 非空即真、列表生成式、三元表达式 day3
一.非空即真: Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false 布尔型,False表示False,其他为True 整数和浮点数,0表示False,其他为 ...
- Python 高级特性(3)- 列表生成式
range() 函数 日常工作中,range() 应该非常熟悉了,它可以生成一个迭代对象,然后可以使用 list() 将它转成一个 list # 判断是不是迭代对象 print(isinstance( ...
- Python生成器、三元表达式、列表生成式、字典生成式、生成器表达式
什么是生成器:只要函数内部包含有yield关键字,那么函数名()的到的结果(生成器地址)就是生成器,再调用函数不会执行函数内部代码这个生成器本身有 _iter_ he _next_功能(即生成器 ...
- Python笔记(九)_切片、列表生成式
切片 mylist[:3] 取前3位元素,0可省略不写 mylist[-4:] 取后4位元素,0可省略不写 mylist[2:4] 从第2个开始取,取到第4个,但第4个不取,取的元素值为4-2=2 m ...
随机推荐
- 2778:Ride to School-poj
2778:Ride to School 总时间限制: 1000ms 内存限制: 65536kB 描述 Many graduate students of Peking University are ...
- Activity讲解
Activity Activity 是 Android 应用的重要组成单元之一(另外三个是 Service.BroadcastReceiver 和 ContentProvider),而 Activit ...
- azure备份虚拟机
备份 azure虚拟机 提前创建了一个linux虚拟机,位置是chinaeast. 如果我们需要备份的虚拟机分别在中国东部和北部,那么需要在两个位置都创建备份库. 创建库 登录经典门户,新建-> ...
- Mysql--数据的操作
1.插入数据 1.1 插入完整数据记录 语法1: 例子: 语法2: 例子: 1.2 插入数据记录一部分 语法: 例子: 1.3 插入多条数据记录 1.插入多条完整的数据 语法: 例子: 插入多条部 ...
- 组合模式(Composite)
组合模式(Composite) 组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图: 直接来看代码: [java] view plaincopypublic class Tr ...
- 企业实战Nginx+Tomcat动静分离架构的技术分享
Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Re ...
- YiShop_如何选择B2C商城开发商
说到B2C商城开发,现在网上搜索能搜出来一大堆开发公司的信息出来.面对如果巨大的信息用户应该如果去评估和判断哪家更适合自己呢!其实开发B2C商城不仅体现在一家开发公司本身的具体实力,还体现在对每一个商 ...
- 如何编写一个稳定的网络程序(TCP)
本节我们看一下怎样才能编写一个基于TCP稳定的客户端或者服务器程序,主要以试验抓包的方式观察数据包的变化,对网络中出现的多种情况进行分析,分析网络程序中常用的技术及它们出现的原因,在之后的编程中能早一 ...
- Vue 浅谈前端js框架vue
Vue Vue近几年来特别的受关注,三年前的时候angularJS霸占前端JS框架市场很长时间,接着react框架横空出世,因为它有一个特性是虚拟DOM,从性能上碾轧angularJS,这个时候,vu ...
- Eureka学习例子
Eureka学习 Spring Cloud下有很多工程: Spring Cloud Config:依靠git仓库实现的中心化配置管理.配置资源可以映射到Spring的不同开发环境中,但是也可以使用在非 ...