Python迭代和列表生成器

使用for循环遍历list和tuple,这种遍历成为迭代

在如C语言中都是通过下标拿到值,for...in这种方式其实是相同的。

在函数的一节,这样说--->‘求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,listtuple。’  可迭代对象为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-11-22-33-44-55-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‘]
时间: 2024-10-10 22:15:12

Python迭代和列表生成器的相关文章

python迭代、列表生成式

迭代: 迭代对象(Iterable),可以直接作用于for循环的对象,如list / tuple / dict / set / str /等集合数据类型可以直接作用于for循环 >>> spam={1:'A',2:'B',3:'C'} >>> for x in spam: #默认情况下,dict迭代的是key print x 1 2 3 >>> for value in spam.values(): #values():迭代value print va

3 -14 迭代 和列表 生成器

列表生成式 执行效率高 简洁 a = []for i in range(5): a.append(i*2)print(a) 列表形式 [a * 2 for a in range(5)] ##列表形式 执行效率低 主要是先完成生成 再展现 占用内存 ##同样 可以传入函数 还执行 def aa(name): print('ni hao %s'%name ) print [a * 2 for a in range(5)] [aa(i) for i in range(5)] 生成器 :当你调用的时候还

Python的高级特性之切片、迭代、列表生成式、生成器

切片 切片就是获取一个list.tuple.字符串等的部分元素 1 l = range(100) 2 #取[0,5)元素 3 print(l[:5]) #[0, 1, 2, 3, 4] 4 #在[0,99]中每隔10个元素取一个 5 print( l[::10]) #[0, 10, 20, 30, 40, 50, 60, 70, 80, 90] 6 #取最后五个元素 7 print( l[-5 : ]) #[95, 96, 97, 98, 99] 8 9 str = "www.genekang.

python的高级特性:切片,迭代,列表生成式,生成器,迭代器

1 #演示切片 2 k="abcdefghijklmnopqrstuvwxyz" 3 #取前5个元素 4 k[0:5] 5 k[:5] 6 #后5个元素 7 k[-5:] #vwxyz 8 #每隔一个取一个 9 k[::2] #acegikmoqsuwy 10 #原样复制一个 11 k[:] 12 13 #演示迭代 14 d={'a':1,'b':2,'c':3} 15 for key in d: 16 print(key) 17 #结果输出abc, 即输出key, 而且要注意dict

Python全栈开发之---迭代器、可迭代对象、生成器

1.什么叫迭代 现在,我们已经获得了一个新线索,有一个叫做"可迭代的"概念. 首先,我们从报错来分析,好像之所以1234不可以for循环,是因为它不可迭代.那么如果"可迭代",就应该可以被for循环了. 这个我们知道呀,字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 我们怎么来证明这一点呢? 1 from collections import Iterable 2 3 l = [1,2,3,4] 4 t = (1,2,3,4) 5 d =

python学习笔记——列表生成式与生成器

1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行: 1 L = [] 2 for i in range(1,11): 3 L.append(i*i) 列表生成式只用一行,前面是生成规则,后面是初始元素,最后还可以加上判断条件: 1 [i*i for i in range(1, 11)] 列表生成式还可以实现多层循环,以及判断,刚刚的栗子再写复杂一

python 列表生成器

python 列表生成器 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 一个循环 在C语言等其他语言中,for循环一般是这样的 如果python也这么写,那么真该看下python的基础教程了~ 但要注意的是,需要加一个[]来,否则会报错... 在上面的例子中,不仅可以嵌套for,甚至可以嵌套if语句 再看看,原来是什么样子 两个循环呢? 原来可能是这样的? 现在可以这样了!!!

Python中的列表解析和生成器表达式

Python中的列表解析和生成器表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.列表解析案例 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/

python列表生成器与生成器

列表生成器是python内置的非常简单却非常强大的. 生成一个列表[1,2,3,4]可以用list(range(1,5)) 列表生成器的应用 如果上面的公式加上判断,就可以筛选出想要的结果,比如仅需要偶数的平方 使用多层循环 生成器 生成器与列表生成器的本质区别就是:一个已经生成数据了,使用时,如果数据过大,会产生内存溢出,而生成器是只有循环时,才会生成数据. 生成器与列表生成器的区别在于一个是[],一个是() 生成器书写 g=(x x ()) (g) 打印generator的方法是next(g