国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python學(xué)習(xí)筆記 序列

godiscoder / 2742人閱讀

內(nèi)置序列

容器序列

list, tuple, collections.deque等這些序列能存放不同類型的數(shù)據(jù)

扁平序列

str, byte, bytearray, memoryview, array.array, 這些序列只能容納一種類型數(shù)據(jù)

以上,容器序列存放的是他們所含任意類型對象的引用,而扁平序列存放的是值而不是引用

列表(list)是最基礎(chǔ)也是最重要的序列類型

列表推導(dǎo)
>>> symbols = "中華人民共和國"
>>> codes = [ord(symbol) for symbol in symbols]
>>> codes
[20013, 21326, 20154, 27665, 20849, 21644, 22269]

列表推導(dǎo)由for循環(huán)變換而來,增強(qiáng)可讀性的同時,也使得代碼更加簡潔

python會忽略代碼里[]/()/{}中的換行,在其中可以省略續(xù)行符 ""

生成器表達(dá)式

生成器的語法和列表推導(dǎo)差不多,只是把方括號換成圓括號

>>> symbols = "中華人民共和國"
>>> tuple(ord(symbol) for symbol in symbols)
(20013, 21326, 20154, 27665, 20849, 21644, 22269)
>>> import array
>>> array.array("I", (ord(symbol) for symbol in symbols))
array("I", [20013, 21326, 20154, 27665, 20849, 21644, 22269])

(1) 如果生成器表達(dá)式是一個函數(shù)唯一的參數(shù),那么這個參數(shù)不需要額外的括號
(2) array的構(gòu)造方法需要兩個參數(shù),所以生成器表達(dá)式需要被括號圍起來

list.sort方法和內(nèi)置函數(shù)sorted

list.sort 方法的功能是將序列就地排序,即不會重新創(chuàng)建一個數(shù)組,將原數(shù)組復(fù)制過來

與list.sort不同的是,序列的內(nèi)置函數(shù)sorted的功能雖然也是排序,但是會重新創(chuàng)建一個數(shù)組,不會對原數(shù)組做任何改動

>>> fruits = ["grape", "respberry", "apple", "banana"]
>>> sorted(fruits)
["apple", "banana", "grape", "respberry"]
>>> fruits
["grape", "respberry", "apple", "banana"]
>>> sorted(fruits, key=len)
["grape", "apple", "banana", "respberry"]
>>> sorted(fruits, key=len, reverse=True)
["respberry", "banana", "grape", "apple"]
>>> fruits
["grape", "respberry", "apple", "banana"]
>>> fruits.sort()
>>> fruits
["apple", "banana", "grape", "respberry"]

由以上的例子可以看出兩者的差別,而sorted函數(shù)還接受key, reverse兩個參數(shù)
其中,參數(shù)key表示比較的標(biāo)準(zhǔn),而reverse表示是否要逆序(True)

利用bisect管理有序序列 利用bisect進(jìn)行搜索

函數(shù)bisect(haystack, needle)可實(shí)現(xiàn)在haystack(干草堆,一個有序序列)中找到needle(針)的位置,該位置滿足的條件是,把needle插入該函數(shù)所搜索到的位置后,整個haystack依然保持有序

import bisect
import sys
import random


haystack = [1, 4, 5, 6, 8, 12, 15, 20, 21, 23, 23, 26, 29, 30]
needles = [0, 1, 2, 5, 8, 10, 22, 23, 29, 30, 31]
row_fmt = "{0:2d} @ {1:2d}    {2}{0:<2d}"


def demo(bisect_fn):
    for needle in reversed(needles):
        position = bisect_fn(haystack, needle)
        offset = position * " |"
        print(row_fmt.format(needle, position, offset))


if __name__ == "__main__":

    if sys.argv[-1] == "left":
        bisect_fn = bisect.bisect_left
    else:
        bisect_fn = bisect.bisect_right

    print("Demo: ", bisect_fn.__name__)
    print("haystack ->", "".join("%2d" % n for n in haystack))
    demo(bisect_fn)



    print("

#################insort###############")
    size = 7
    # random.seed(1729)
    my_list = []
    for i in range(7):
        new_item = random.randrange(size * 2)
        bisect.insort(my_list, new_item)
        print("%2d ->" % new_item, my_list)
        
    #############運(yùn)行結(jié)果################
Demo:  bisect_right
haystack ->  1 4 5 6 8121520212323262930
31 @ 14     | | | | | | | | | | | | | |31
30 @ 14     | | | | | | | | | | | | | |30
29 @ 13     | | | | | | | | | | | | |29
23 @ 11     | | | | | | | | | | |23
22 @  9     | | | | | | | | |22
10 @  5     | | | | |10
 8 @  5     | | | | |8
 5 @  3     | | |5
 2 @  1     |2
 1 @  1     |1
 0 @  0    0


#################insort###############
 9 -> [9]
 7 -> [7, 9]
 1 -> [1, 7, 9]
 4 -> [1, 4, 7, 9]
 5 -> [1, 4, 5, 7, 9]
12 -> [1, 4, 5, 7, 9, 12]
 5 -> [1, 4, 5, 5, 7, 9, 12]

*bisect其實(shí)是bisect_rihght函數(shù)的縮寫,其返回的插入位置是原始序列與被插入元素相等元素位置的 右邊 ,該函數(shù)還有一個姊妹函數(shù)bisect_left,其返回的插入位置是原始序列與被插入元素相等元素位置的 左邊

書中還有推薦一個網(wǎng)站 Python Tutor , 是一個對python運(yùn)行原理進(jìn)行可視化分析的工具。

注: 以上內(nèi)容主體均來自于《流暢的python》書中第2章 序列構(gòu)成的數(shù)組

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42158.html

相關(guān)文章

  • ApacheCN 人工智能知識樹 v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點(diǎn)合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評論0 收藏0
  • python 學(xué)習(xí)筆記 關(guān)于切片

    摘要:我們還可以給切片進(jìn)行命名,有名字的切片,顯然更具有可讀性。對切片賦值時,賦值符號右側(cè)必須是一個可迭代對象,即使這個對象只包含一個元素,否則會提示錯誤。注以上內(nèi)容主體來自于流暢的一書中切片和切片原理 切片是python中列表(list)、元組(tuple)、字符串(str)等序列類型都支持的一種操作,但實(shí)際上切片的功能比人們所想象的要強(qiáng)大的多。 切片區(qū)間為什么會忽略最后一個元素 當(dāng)只有...

    jerryloveemily 評論0 收藏0
  • python學(xué)習(xí)筆記-map/reduce/filter/sorted

    摘要:會依次將中的數(shù)據(jù)傳遞到中,根據(jù)返回的或者,留下或者拋棄這個值。而對于字符串,則是根據(jù)字符串對應(yīng)的碼表進(jìn)行排序。同時也是一個高階函數(shù),可以實(shí)現(xiàn)自定義的排序方式。 map/reduce是一種編程思想,在各個領(lǐng)域都有它的實(shí)踐。網(wǎng)上有一個簡單的例子解釋map/reduce。比如說你需要數(shù)一下某一個圖書館中有多少本藏書。最傻瓜的做法就是排一個人從頭數(shù)到尾。這樣速度慢,低效。另一種方法就是先將圖書...

    用戶83 評論0 收藏0
  • Python入門學(xué)習(xí)筆記匯總

    摘要:導(dǎo)語本文章匯總了本人在學(xué)習(xí)基礎(chǔ)之緒論篇數(shù)據(jù)結(jié)構(gòu)篇函數(shù)篇面向?qū)ο笃刂屏鞒唐驮幊唐獙W(xué)習(xí)筆記的鏈接,打算入門的朋友們可以按需查看并交流。 導(dǎo)語:本文章匯總了本人在學(xué)習(xí)Python基礎(chǔ)之緒論篇、數(shù)據(jù)結(jié)構(gòu)篇、函數(shù)篇、面向?qū)ο笃⒖刂屏鞒唐驮幊唐獙W(xué)習(xí)筆記的鏈接,打算入門Python的朋友們可以按需查看并交流。 第一部分:緒論篇 1、Python數(shù)據(jù)模型 第二部分:數(shù)據(jù)結(jié)構(gòu)篇 2、序列構(gòu)成...

    U2FsdGVkX1x 評論0 收藏0
  • Python學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記起始結(jié)束步長步長可以為負(fù)數(shù),要求結(jié)束起始倒序相乘強(qiáng)制轉(zhuǎn)成元組,不可變的,可作為的或者函數(shù)的多個返回值可用函數(shù)效果為插入到,找到返回,找不到返回找到返回,找不到返回,并且插入鍵值對,返回列表返回迭代器導(dǎo)入賦值序列解包三元運(yùn)算如果為執(zhí) Python學(xué)習(xí)筆記 1.List [起始:結(jié)束:步長] ?步長可以為負(fù)數(shù),要求結(jié)束>起始 ?倒序 a = b[::-1] ?相乘 [42] * 3...

    amuqiao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<