永发信息网

关于python列表生成的一个问题

答案:1  悬赏:60  手机版
解决时间 2021-11-17 23:27
关于python列表生成的一个问题
最佳答案
python的列表生成式
一、r的防止字符转义
print r"a\nb"

运行结果:
a\nb

二、获取变量类型
a = r"a\nb"
print type(a)

运行结果:


三、判断类型
a = r"a\nb"
print isinstance(a,str)

运行结果:
True

四、对list、tuple、dict、set进行迭代
4.1常用的方式
list = ['a','b','c']
for i in list:
print i

dict = {"k1":"v1","k2":"v2"}
for k,v in dict.items():
print k,v

但是这种迭代方式会把list装到内存中进行迭代
4.2使用迭代器来迭代
list = ['a','b','c']
for i in iter(list):
print i

dict = {"k1":"v1","k2":"v2"}
for k,v in dict.iteritems():
print k,v
dict = {"k1":"v1","k2":"v2"}
for k in dict.iterkeys():
print k

这种方式的迭代比较省内存
4.3迭代值的同时迭代下标
list = ['a','b','c']
for index,value in enumerate(list):
print index,value

五、列表生成式
根据集合生成列表
list1 = ['a','b','c']
list2 = [1,2]
print [x*y for x in list1 for y in list2 if y>1 and y<3]

运行结果是:
['aa', 'bb', 'cc']

六、列表生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
只要把一个列表生成式的[]改成(),就创建了一个generator:
g = (x * x for x in range(10))
generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
但是我们一般通过for循环来迭代它,并且不需要关心StopIteration的错误。
for n in g:
print(n)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
gta5线上模式怎么提升人物的力量?
光华馨地交通方便吗?应该怎么过去?
工商来到我的营业执照注册地址,叫我开门给他
吉利帝豪glc4g18发动机是正时链条的吗
李源的人物简历
起亚K3和福特福睿斯哪个好
张皓宇这个名字好吗??能打多少分?
怎样疯狂减肥
明星电竞网咖地址在什么地方,我要处理点事!
有关男朋友管教女朋友的电影
指间美甲(海门步行街)地址有知道的么?有点事
求毛泽东诗词
先科s720行车记录仪自带内存可以录多久
历史上的汕尾市都有哪些名人?历史
形容寝室环境的词语有哪些?
推荐资讯
中国有嘻哈快回家歌曲
五台山到保定的路况正常通车了吗
森吉图音楚鲁怎么去啊,有知道地址的么
口很苦怎么办?
音乐有七个音符为何会有五音不全?
死了,注安考试报名时间出来了没
孩子姑姑在香港我们去探亲待多长时间
4.晚上停电,小文在家点了8支蜡烛,先被风吹
请求高手编写通达信MACD绿柱变短或持续变短、
从哪里下载歌曲不收费?
在Java培训班5个月能就业吗
求这部电影出处 未满18 ​勿进!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?