91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

生成器、BIF

發布時間:2020-07-22 05:34:27 來源:網絡 閱讀:137 作者:wx5b87e6d52af84 欄目:編程語言

列表解析式

列表解析式是一種利用 [ 表達式 + for 循環 [ + if判斷 ] ] 快速生成列表對象的python語法,方便使用者快速構建列表。
語法

# 列表解析式   第一種效率會明顯高于第二種
[(i,j) for i in range(1000) if i > 700 for j in range(1000) if j > 900]
[{i,j} for i in range(1000) for j in range(1000) if j>900 if i > 700]

集合解析式

#  注:其中的元素必須可哈希,不允許是列表,字典,set()等不可哈希對象,否則將會報錯
{ (i,j) for i in range(1000) if i > 700 for j in range(1000) if j > 900 }

生成器表達式

it = (i for i in range(10))          #將會返回一個生成器對象

生成器對象

一個可以做指定操作,并在每次next()時返回一個值的對象,節省空間存放數據,但每次計算需要等待.

迭代器對象

一個可以被迭代的對象,for 將會全部迭代其中的元素,也可使用next()一個個取值返回,迭代器只可以使用一輪,無法反復使用,生成器也是一個迭代器

可迭代對象

可以被迭代的對象,例如元組,字典,集合,列表等容器,生成器和迭代器也是可迭代對象

內置函數(BIF)

# len():返回集合類型的長度,注:無法計算生成器或迭代器的長度,可計算list,set,dict等集合的長度
# len((i for i in range(5)))       # ==> TypeError:object of type 'generator' has no len()  計算生成器的長度

isinstance(True, int), issubclass(bool, int) # 實例判斷,子類判斷
divmod(124,3)                       #  ==>   (124/3, 124%3)==(41, 1)
chr(97)                                  # ==>  int(0-255) --> char
ord("a")                                 # ==>  char  --> int
hex(ord("中"))                       # 中文使用的是unicode編碼表對應關系, 兩字節長度 '0x4e2d'

# 排序  迭代內部容器,默認升序并返回排序后的列表,set和dict也可排序,迭代器也可排序
sorted([1,2,3] + ['a'],reverse=True, key=str )   # 臨時轉化類型進行比較,原值不會改變,123還是int類型 ['a', 3, 2, 1]
a = iter("abcd")        # 對迭代器排序,會遍歷整個迭代器,返回一個排序好的列表;
sorted(a)                 # ['a', 'b', 'c', 'd']

返回迭代器的BIF

# reversed(seq)                                    # 翻轉一個有序容器,set和dict無法翻轉 ==> 返回一個翻轉后的迭代器,單個對象
[ i for i in reversed("abcd") ]                   # ==> ['d', 'c', 'b', 'a']
it = reversed(sorted({1,49,0,6,7,8,}))    # ==> <list_reverseiterator at 0x212dce3ccf8>
print( [ i for i in it ] )                                  # 遍歷迭代器 [49, 8, 7, 6, 1, 0]

# 枚舉:enumerate(seq, start=0) # ==> 返回一個迭代器,每次返回一個二元組==> (index, elem)
en = enumerate([1,2,3,4,5])
next(en)                           # ==> (0, 1)
next(en)                          # ==>(1, 2)
print([i for i in en])          #  [(2, 3), (3, 4), (4, 5)] 完全遍歷

# 迭代器
iter(iterable)                                 # ==> 返回一個迭代器
iter(callable, sentinel)                  #   ==> iterator
def fun():
    x = 0 
    def fun1():
        nonlocal x
        x += 1
        return x
    return fun1
f = fun()
it = iter(f, 7)             # == > f 必須可調用,0參,當返回值等于 sentinel 結束
[i for i in it]               # == > [1,2,3,4,5,6] 

# 文件讀取操作時的使用
with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)

from functools import partial
with open('somefile.data', 'rb') as f:
    records = iter(partial(f.read, RECORD_SIZE), b'')
    for r in records:
            pass
# iter() 函數有一個鮮為人知的特性,如果你給它傳遞一個可調用對象和一個標記值,它
# 會創建一個迭代器。這個迭代器會一直調用傳入的可調用對象直到它返回標記值為止
# 可迭代對象,包括:set, dict, 生成器,string,range(), 

# in, not in 
# 執行in操作,對于線性順序結構來說,本質上就是對其進行遍歷
# 生成器和迭代器也可以進行 in 操作
a = iter("abcd")   
"a" in a             # ==> True, 遍歷到第一個元素找到 "a", 迭代器為使用完,可以繼續使用
next(a)             # ==> 繼續使用返回下一個 ==>  'b'

# zip() 
for i in zip(range(5), "abcde"):
    print(i ,end=" ")       #==>  (0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e')輸出結果使用enumerate()一樣
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

道真| 额济纳旗| 遂昌县| 类乌齐县| 紫云| 宜君县| 楚雄市| 平罗县| 同德县| 平塘县| 文昌市| 佳木斯市| 靖江市| 通渭县| 郁南县| 长汀县| 泽普县| 古丈县| 德昌县| 建始县| 南宁市| 张掖市| 西藏| 盘锦市| 乐昌市| 玉屏| 科尔| 英吉沙县| 喀喇沁旗| 甘南县| 哈尔滨市| 福清市| 金山区| 峨边| 永寿县| 长顺县| 泸溪县| 彰武县| 稻城县| 马山县| 甘孜|