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

資訊專欄INFORMATION COLUMN

python 學(xué)習(xí)筆記 關(guān)于切片

jerryloveemily / 2074人閱讀

摘要:我們還可以給切片進(jìn)行命名,有名字的切片,顯然更具有可讀性。對切片賦值時(shí),賦值符號右側(cè)必須是一個(gè)可迭代對象,即使這個(gè)對象只包含一個(gè)元素,否則會提示錯(cuò)誤。注以上內(nèi)容主體來自于流暢的一書中切片和切片原理

切片是python中列表(list)、元組(tuple)、字符串(str)等序列類型都支持的一種操作,但實(shí)際上切片的功能比人們所想象的要強(qiáng)大的多。

切片區(qū)間為什么會忽略最后一個(gè)元素

當(dāng)只有一個(gè)位置信息時(shí),我們也可以讀出該區(qū)間包含幾個(gè)值,例如:rang(3) / my_list[:3]都是含有3個(gè)元素;

當(dāng)起止位置信息都可見時(shí),我們可以快速計(jì)算區(qū)間的長度,即(stop-start)即可;

可以利用一個(gè)任意下標(biāo)將序列分割成互不交叉的兩個(gè)子序列,如:my_list[:x] / my_list[x:]。

切片slice(start, stop, step)

對seq[start, stop, step]進(jìn)行求值的時(shí)候,python會調(diào)用seq.__getitem__( slice(start, stop, step))。我們還可以給切片進(jìn)行命名,有名字的切片,顯然更具有可讀性。如下例:

invoice = """
0.....6........15.....21
1001  prod_1   $17.5  3
1002  prod_2   $4.5   2
1003  prod_3   $10    1
1004  prod_4   $12    1
1005  prod_5   $8     1
"""

prod_id = slice(0, 6)
prod_desc = slice(6, 15)
prod_price = slice(15, 21)
prod_quantity = slice(21, None)
line_items = invoice.split("
")[2:]
for item in line_items:
    print(item[prod_price], item[prod_desc], item[prod_quantity])

運(yùn)行結(jié)果如下:

給切片賦值

如果把切片放在賦值符號的左邊,或者將切片作為del操作的對象,我們就可以對序列進(jìn)行嫁接、切除或者修改等操作,十分快捷方便。

對切片賦值時(shí),賦值符號右側(cè)必須是一個(gè)可迭代對象,即使這個(gè)對象只包含一個(gè)元素,否則會提示錯(cuò)誤 TypeError: can only assign an iterable。

切片的實(shí)現(xiàn)
>>> dir(slice)
["__class__", "__delattr__", "__dir__", "__doc__", "__eq__", "__format__", "__ge__", "__getattribute__", "__gt__", "__hash__", "__init__", "__init_subclass__", "__le__", "__lt__", "__ne__", "__new__", "__reduce__", "__reduce_ex__", "__repr__", "__setattr__", "__sizeof__", "__str__", "__subclasshook__", "indices", "start", "step", "stop"]

slice 是python的內(nèi)置類型,類型所具有的indices方法可以幫助我們實(shí)現(xiàn)序列的切片操作。

S.indices(len) -> (start, stop, stride)
給定長度為len的序列,計(jì)算S表示的擴(kuò)展切片的起始和結(jié)尾索引,以及步幅。超出邊界的索引會被截掉。

如上圖兩個(gè)例子,假如現(xiàn)在有一個(gè)長度為5的序列seq,那么對于該序列而言,

seq[0, 10, 2] == seq[0, 5, 2]
seq[-3, 0, 0] == seq[2, 5, 1]

如果能夠善用slice類型中Indices方法,則可以更加快捷實(shí)現(xiàn)自定義類型數(shù)據(jù)的切片操作。

注: 以上內(nèi)容主體來自于《流暢的python》一書中 “2.4 切片” 和 “10.4.1 切片原理”

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

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

相關(guān)文章

  • python學(xué)習(xí)筆記切片

    摘要:取多個(gè)元素從頭開始取多個(gè)元素切片結(jié)束,但是不包括該的元素。切片開始的不填則默認(rèn)是從最前端即開始。當(dāng)然,從尾端開始切片,也支持省略代表一直切到尾部。其他編程語言入都提供了很多操作字符串的函數(shù),其實(shí)中可以利用切片輕松完成。 取一個(gè)list或者tuple的一部分是十分常見的操作。我們除了利用循環(huán)通過索引一個(gè)個(gè)獲取元素外,python還為我們提供了方便的切片(Slice)操作符:。 我們定義一...

    TalkingData 評論0 收藏0
  • 四個(gè)月技術(shù)寫作,我寫了些什么?

    摘要:因?yàn)榍宄匾庾R到自己的基礎(chǔ)并不扎實(shí),所以,幾個(gè)月以來,我花了不少時(shí)間系統(tǒng)性地學(xué)習(xí)了一些內(nèi)容。時(shí)間過得真快,現(xiàn)在能拿得出手的也就僅僅是字符串系列切片系列和迭代器系列了。關(guān)于技術(shù)寫作和翻譯,我初見門道,今后還會多作總結(jié)分享。 showImg(https://segmentfault.com/img/bVbn6bh?w=4167&h=2569); 從去年國慶節(jié)開始,我連續(xù)更新了 4 個(gè)月公眾...

    bingchen 評論0 收藏0

發(fā)表評論

0條評論

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