Python迭代和列表生成器
使用for循环遍历list和tuple,这种遍历成为迭代
在如C语言中都是通过下标拿到值,for...in这种方式其实是相同的。
在函数的一节,这样说--->‘求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,list;tuple。’ 可迭代对象为list,tuple
所以使用for遍历时,对象是要可以迭代的。
如何判断一个对象能不能迭代?
Python的collections模块的Iterable可以判断是否可以迭代; isinstance()函数用来判断某种数据类型是否是已知的类型
>>>isinstance(1,int)
Ture
>>>isinstance('abc',str)
Ture
>>>isinstance(3.14,float)
Ture
>>>isinstance('3.14',float)
False
##################################### from collections import Iterable
>>>isinstance([1,2,3,4,5],Iterable)
Ture
>>>isinstance(12345,Iterable)
False
>>>isinstance((1,2,3,4,5),Iterable)
Ture
>>>isinstance({'name':'jkl','age':15},Iterable)
Ture
所以dict能使用for遍历处key或values或key,values
dict是一个能迭代的对象,具体的看使用环境
如何让一个list或者tuple同时显示下标和元素?
Python提供了enumerate()函数,把list或者tuple变成了:索引-元素对,就像键值对
t = [1,2,3,4,5]
for k,v in enumerate(t)
print(k,'-',v)
0-1
1-2
2-3
3-4
4-5
5-6
列表生成式
如要生成一个L = [2,4,6,8,10,12,14,......100]这样的list;
可以切片取出:
#这里使用list()把range()函数生成的序列数转成list,tuple也以同样的方法
>>>L = list(range(1,101))
>>>L1 = L[1::2]
>>>L1
[2,4,6,8,10,........]
还可以使用函数:
def create():
L = []
for x in range(1,51):
L.append(x*2)
print(L)
return create()
[2,4,6,8,10,12,......100]
以上代码都挺麻烦,使用列表生成式一行就可以解决掉
[x * 2 for x in range(1,101)]
[2,4,6,8,10,.....100]
生成式还可以两个for循环嵌套,生成了一个全排列
[m * n for m in range(1,3) for n in range(1,5)] [1,2,3,4,2,4,6,8]
迭代表达式
t = (1,2,3,4,5,6)
[k for k in t]
[1,2,3,4,5,6]
加上其他的限定条件:一个list包含多个数据类型,取出字符串并将首字母大写
L = ['grant','fitz',15,3.14,None]
[x.title() for x in L if instance(x,str)]
['Grant','Fitz']
Python迭代和列表生成器的更多相关文章
- 三、python高级特性(切片、迭代、列表生成器、生成器)
1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3] #即为['Mli','add','sal'] 从索引0开始 ...
- Python 迭代器之列表解析与生成器
 [TOC] 1. 列表解析 1.1 列表解析基础 列表解析把任意一个表达式应用到一个迭代对象中的元素 Python内置ord函数会返回一个字符的ASCII整数编码(chr函数是它的逆过程, 它将A ...
- 【Python学习之五】高级特性3(切片、迭代、列表生成器、生成器、迭代器)
3.列表生成器(List Comprehensions) 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式.举个例子,要生成list ...
- Python中的列表生成器,迭代器的理解
首先,思考一个问题,比如,我们想生成0-100的列表,我们怎么做? 当然,可以写成 list1=[1,2,3...,100] 可以看出,这种方法不适合生成长的列表,那么Python中就可以利用已有的列 ...
- python语法_列表生成器_生成器_迭代器_异常捕获
列表生成式 a = [x for x in range(10)] print(a) x 可进行操作 a = [x*2 for x in range(10)] print(a) x甚至可以为函数, de ...
- python 迭代 及列表生成式
什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过 for ...
- python迭代、列表生成式
迭代: 迭代对象(Iterable),可以直接作用于for循环的对象,如list / tuple / dict / set / str /等集合数据类型可以直接作用于for循环 >>> ...
- 【Python学习之五】高级特性5(切片、迭代、列表生成器、生成器、迭代器)
5.迭代器 由之前的生成器可知,for循环用于可迭代对象:Iterable.包括集合数据类型: list.tuple.dict.set.str 等,以及两种生成器.判断迭代器,使用 isinstanc ...
- 【Python学习之五】高级特性4(切片、迭代、列表生成器、生成器、迭代器)
4.生成器(generator) 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的 ...
随机推荐
- 20165306学习基础和C语言基础调查
20165306学习基础和C语言基础调查 技能学习心得 我认为兴趣.责任感.毅力对技能的获得非常重要. 因为我从小五音不全.肢体不协调,所以看春晚等节目的时候会把更多的关注点放在主持人身上.小时候觉得 ...
- 【Mysql】key 、primary key 、unique key 与index区别
参考:https://blog.csdn.net/nanamasuda/article/details/52543177 总的来说,primary key .unique key 这些key建立的同时 ...
- JavaScript中的方法事件和函数的方法的三种方法
js中的很多事件 而事件相对应的就是方法(函数 )那么今天所说的就是这三种方法 已onclick事件为例 1: 基本方法 <div id="a" onclick= ...
- hdu 3208 Integer’s Power 筛法
Integer’s Power Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- P4574 [CQOI2013]二进制A+B
传送门 思路: 本题可用数位DP来做,设 f [ i ][ a ][ b ][ c ][ j ] 表示当前枚举到(二进制下的)第i位,a' b' c'各用a,b,c了几个1,j表示最后一位是否有进位. ...
- PL/SQL Developer安装配置
选择tool下的perferences 修改下面标记的内容即可
- BMP操作_测试
1.参考网址: http://blog.sina.com.cn/s/blog_678b377a0100mlyb.html http://blog.csdn.net/weiyongtao87/artic ...
- Windows 下使用virtualenv 第一次使用flask
前几天在Windows下virtualenv 了一个名为 venv的目录,然后,今天差点忘了怎么进去虚拟环境. 发现在创建虚拟环境的venv目录下有个Scripts目录,里面有一堆 名为activat ...
- Cordova插件:InAppBrowser
版权声明:本文为博主原创文章,转载请注明出处 一.应用场景 我们在做cordova app开发的时候,可能会经常遇到这种需求.比如在你的app中,你想打开一个URL,但是又不想跳转到系统的浏览器去打开 ...
- 20165327 2017-2018-2 《Java程序设计》第6周学习总结
20165327 2017-2018-2 <Java程序设计>第6周学习总结 教材内容总结 第八章 String类常用方法 public int length() public boole ...