日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获

發布時間:2023/12/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

列表生成式

a = [x for x in range(10)]

print(a)

x 可進行操作

a = [x*2 for x in range(10)]

print(a)

x甚至可以為函數,

def f(n):

return n*n*n

a = [f(x) for x in range(10)]

########################

賦值方法

t = ('123',8)

a,b = t

print(a)

print(b)

#############

a =(x for x in range(10))#

print(a)#generator object

這個時候打印出來的結果是一個生成器對象,并沒有生成序列且將里面的元素并全部存進內存(列表生成器時生成的列表,列表里的元素已經全部存進內存了)

類比于之前是廚師做了N道菜出來(列表),菜(元素)全部吃進了肚子(內存),這里只是生成了一個廚師(生成器),想吃什么菜(元素)就調用廚師進行生成。

print(next(a)) 這樣就可答應序列的第一個值了,next(a)等價于 a.__next__() a.next()

生成器里能迭代多少次,就能取多少次值,只能按順序一個一個區,不能隔取,反順序取,取完不能再進行曲了,會返回迭代錯誤的報錯。

生成器就是一個可迭代對象Iterable object

for i in s:

print(i)

這里for循環其實就是調用了next(s),循環時,第一次i打印0 ,第二次打印1,第二次打印的時候0對象由于沒人引用,已經被回收了。

####

生成器第二種生成方法:使用yield

def foo():

print("Ok1")

yield 1

print("OK2")

yield 2

foo() 直接調用foo() 是不會打印的,因為這是一個生成器函數,碰到yield 就會創建一個生成器

g = foo()

next(g) 采用next(g) 調用,遇到yield 則返回生成器里定義的第一個值。

next(g) 再次采用next(g)進行調用,會yield 1開始,返回值

##

凡是能進行for循環的 都是可迭代的。

凡是有擁有__iter__方法的都是可迭代對象。

###

使用斐波那契數列進行生成器的例子

def fbnq(max):

n,before,after = 0,0,1

while n < max:

yield after #將需求里需要的值設置為yield 返回的即可,yield 其實就是等同于return.

before,after =after,before + after

n = n+1

next(fbnq(10))

####

send方法

a.send('eeee')

def bar():

print("OK")

count=yield 1

print(count)

print("OK2'")

yield 2

g = bar()

next(g)

b = g.send('eee')

print(b)

####

迭代器

滿足兩個條件:1 有iter方法,2 有next方法

l = [1,2,3,4]

d = iter(l)

for 循環內部三件事:

1 調用可迭代對對象的iter方法返回一個迭代器

2 不斷調用迭代器對象的next方法

3 捕獲異常(迭代器迭代結束)進行退出

####

判斷是否為list,迭代器,可迭代對象

from collections import Iterator

isinstance([1,2,3,4],list)

isinstance([1,2,3,4],Iterator)

isinstance([1,2,3,4],Iterable)

###

f = open('abc123.txt','r)

for i in f.readlines(): 這里是將文件按行取出,把每一行當成一個元素放入內存,這樣文件很大時,元素很多,占用內存也用掉了很多。

for i in f(): 這里f是一個迭代器,放入內存只是一個迭代器,這樣遍歷時,每次拿出來一行就看一行,前一行就被內存回收了,內存里始終只有一行存在。

####

一句話實現查找文件里溫度最長的行

print(max(len(x) for x in open('日志記錄','r',encoding='utf8')))

總結

以上是生活随笔為你收集整理的python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。