切片

在Python 里,像列表(list)、元組(tuple)和字符串(str)這類(lèi)序列類(lèi)型都支持切片操作,但是實(shí)際上切片操作比我們所想象的要強(qiáng)大很多。下面是一些切片形式的用法。

對(duì)對(duì)象進(jìn)行切片

>>> s = 'bicycle'
>>> s[::3]
'bye'
>>> s[::-1]
'elcycib'
>>> s[::-2]
'eccb'

a:b:c 這種用法只能作為索引或者下標(biāo)用在 [] 中來(lái)返回一個(gè)切片對(duì)象:slice(a, b, c)。對(duì) seq[start:stop:step] 進(jìn)行求值的時(shí)候,Python 實(shí)際上會(huì)調(diào)用seq.__getitem__(slice(start, stop, step))
下面純文本文件形式的收據(jù)以一行字符串的形式被解析

invoice = """
 1909  Pimoroni PiBrella                    $17.50    3    $52.50
 1489  6mm Tactile Switch x20                $4.95    2     $9.90
 1510  Panavise Jr. - PV-201                $28.00    1    $28.00
 1601  PiTFT Mini Kit 320x240               $34.95    1    $34.95
"""

SKU = slice(0, 6)
DESCRIPTION = slice(6, 40)
UNIT_PRICE = slice(40, 52)
QUANTITY = slice(52, 55)
ITEM_TOTAL = slice(55, None)
line_items = invoice.split('\n')

for item in line_items:
    print(item[UNIT_PRICE], item[DESCRIPTION])

$17.50    Pimoroni PiBrella                
$4.95    6mm Tactile Switch x20           
$28.00    Panavise Jr. - PV-201            
$34.95    PiTFT Mini Kit 320x240

對(duì)切片賦值
如果把切片放在賦值語(yǔ)句的左邊,或把它作為 del 操作的對(duì)象,我們就可以對(duì)序列進(jìn)行嫁接、切除或就地修改操作。

>>> l = list(range(10))
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l[2:5] = [20, 30]
>>> l
[0, 1, 20, 30, 5, 6, 7, 8, 9]
>>> del l[5:7]
>>> l
[0, 1, 20, 30, 5, 8, 9]
>>> l[3::2] = [11, 22]
>>> l
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 先從原理上分析切片運(yùn)算:list的切片,內(nèi)部是調(diào)用__getitem__,__setitem__,__delite...
    編程技術(shù)閱讀 2,382評(píng)論 0 1
  • 本文翻譯自Rob Pike的文章《Arrays, slices (and strings): The mechan...
    大蟒傳奇閱讀 5,084評(píng)論 2 8
  • 我們總是喜歡拿“順其自然”來(lái)敷衍人生道路上的荊棘坎坷,卻很少承認(rèn),真正的順其自然,其實(shí)是竭盡所能之后的不強(qiáng)求,而非...
    喜龍愛(ài)慧閱讀 3,471評(píng)論 1 1
  • 之后的一年中,白天我可以毫無(wú)顧忌地大笑,說(shuō):“我忘了你。”可是,不眠的夜仍然太長(zhǎng),流的淚,泄露了我的悲傷。 我以為...
    七弦墨閱讀 459評(píng)論 0 0
  • API文檔可以幫助我們快速理解接口的調(diào)用方法,因此一份好的API文檔其實(shí)是非常重要的。但是對(duì)于開(kāi)發(fā)者來(lái)說(shuō)編寫(xiě)API...
    codjust閱讀 5,411評(píng)論 1 3

友情鏈接更多精彩內(nèi)容