Python基礎-不一樣的切片操作

Python切片操作是Python中從列表乡括,字符串等某個序列對象中抽取部分值的情況下使用的方法粥烁,首先我們要知道序列對象包括哪些類型栋豫。

序列:字符氯葬、列表、元組 ??


? 所有序列都支持迭代捅暴,序列表示索引為非負整數的有序對象集合恬砂,字符和元組屬于不可變序列,列表可變蓬痒。

Python切片操作的一般方式

一個完整的切片表達式包含兩個“:”泻骤,用于分隔三個參數(start_index、end_index梧奢、step)狱掂,當只有一個“:”時,默認第三個參數step=1亲轨。

切片操作基本表達式:object[start_index:end_index:step]

step:正負數均可趋惨,其絕對值大小決定了切取數據時的‘‘步長”,而正負號決定了“切取方向”惦蚊,正表示“從左往右”取值器虾,負表示“從右往左”取值。當step省略時蹦锋,默認為1兆沙,即從左往右以增量1取值≡畏啵“切取方向非常重要挤悉!

start_index:表示起始索引(包含該索引本身);該參數省略時巫湘,表示從對象“端點”開始取值,至于是從“起點”還是從“終點”開始昏鹃,則由step參數的正負決定尚氛,step為正從“起點”開始,為負從“終點”開始洞渤。

end_index:表示終止索引(不包含該索引本身)阅嘶;該參數省略時,表示一直取到數據“端點”载迄,至于是到“起點”還是到“終點”讯柔,同樣由step參數的正負決定,step為正時直到“終點”护昧,為負時直到“起點”魂迄。

下面說下實際的使用案例,以列表為例子:

list_slice=['alex','peter','leo','simon']


取單個書

print(list_slice[0])

['alex']


取整個列表

print(list_slice[::])

['alex', 'peter', 'leo', 'simon']


取前三個元素

print(list_slice[0:3]) ?##start_index從0開始惋耙,左包右不包捣炬,就是0,1,2 不包括3

print(list_slice[-4:-1:1])

['alex', 'peter', 'leo']


倒序取數

print(list_slice[0:3:-1]) ##start_index, end_index是0-3熊昌,是說從左向右取,但是step=-1是從右到左取湿酸,相互矛盾

[]


print(list_slice[::-1])##倒序整個list

print(list_slice[3::-1]) ##倒序整個list

['simon', 'leo', 'peter', 'alex']


print(list_slice[3:0:-1]) ##取后三個元素 start_index=3, end_index=0(但是不包括)婿屹,左包右不包


print(list_slice[-1:-4:-1]) ##取后三個元素, start_index, end_index可以用負號來表示元素

['simon', 'leo', 'peter']


連續(xù)切片

print(list_slice[0:4][0:2]) ##理論上可以無數次切片

['alex', 'peter']


嵌套列表的切片

list_list_slice=['alex','peter',['a','b','c'],'leo','simon']

print(list_list_slice[2][0:2])

['a', 'b']


切片的三個參數可以用表達式,如

a[2+1:3*2:7%3]

[3, 4, 5]

等價于 a[2+1:3*2:7%3] = a[3:6:1]


切片range的案例

for i in range(1,100)[2::3][-10:]:?

? ? ? ?print(i)


就是利用range函數生成1-99的整數推溃,然后取3的倍數昂利,再取最后十個。

用切片來修改list

list_slice[0:2] =['x','y']

print(list_slice)

['x', 'y', 'leo', 'simon']

list_slice[0] =['x','y']

print(list_slice)

[['x', 'y'], 'y', 'leo', 'simon']

字符串铁坎,元組的切片操作和列表類似


(一)start_index蜂奸、end_index、step可同為正厢呵、同為負窝撵,也可正負混合使用。但必須遵循一個原則襟铭,否則無法正確切取到數據:當start_index的位置在end_index的左邊時碌奉,表示從左往右取值,此時step必須是正數(同樣表示從左往右)寒砖;當start_index的位置在end_index的右邊時赐劣,表示從右往左取值,此時step必須是負數(同樣表示從右往左)哩都,即兩者的取值順序必須是相同的魁兼。對于特殊情況,當start_index或end_index省略時漠嵌,起始索引和終止索引由step的正負來決定咐汞,不會存在取值方向出現矛盾的情況(即不會返回空列表[]),但正和負取到的結果是完全不同的儒鹿,因為一個向左一個向右化撕。


(二)在利用切片時,step的正負是必須要考慮的约炎,尤其是當step省略時植阴。比如a[-1:],很容易就誤認為是從“終點”開始一直取到“起點”圾浅,即a[-1:]= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]掠手,但實際上a[-1:]=a[-1]=9,原因在于step=1表示從左往右取值狸捕,而起始索引start_index=-1本身就是對象的最右邊的元素了喷鸽,再往右已經沒數據了,因此只有a[-1]一個元素府寒。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末魁衙,一起剝皮案震驚了整個濱河市报腔,隨后出現的幾起案子,更是在濱河造成了極大的恐慌剖淀,老刑警劉巖纯蛾,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異纵隔,居然都是意外死亡翻诉,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門捌刮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碰煌,“玉大人,你說我怎么就攤上這事绅作÷” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵俄认,是天一觀的道長个少。 經常有香客問我,道長眯杏,這世上最難降的妖魔是什么夜焦? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮岂贩,結果婚禮上茫经,老公的妹妹穿的比我還像新娘。我一直安慰自己萎津,他們只是感情好卸伞,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锉屈,像睡著了一般瞪慧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上部念,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音氨菇,去河邊找鬼儡炼。 笑死,一個胖子當著我的面吹牛查蓉,可吹牛的內容都是我干的乌询。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼豌研,長吁一口氣:“原來是場噩夢啊……” “哼妹田!你這毒婦竟也來了唬党?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鬼佣,失蹤者是張志新(化名)和其女友劉穎驶拱,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體晶衷,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蓝纲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了晌纫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片税迷。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锹漱,靈堂內的尸體忽然破棺而出箭养,到底是詐尸還是另有隱情,我是刑警寧澤哥牍,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布毕泌,位于F島的核電站,受9級特大地震影響砂心,放射性物質發(fā)生泄漏懈词。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一辩诞、第九天 我趴在偏房一處隱蔽的房頂上張望坎弯。 院中可真熱鬧,春花似錦译暂、人聲如沸抠忘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崎脉。三九已至,卻和暖如春伯顶,著一層夾襖步出監(jiān)牢的瞬間囚灼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工祭衩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灶体,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓掐暮,卻偏偏與公主長得像蝎抽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子路克,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • 列表: 有序的可變的元素集合 定義: 方式1[元素1, 元素2, 元素3...]例如: [1, 2, 3, 4, ...
    伯wen閱讀 333評論 0 0
  • 寫在前面的話 代碼中的# > 表示的是輸出結果 輸入 使用input()函數 用法 注意input函數輸出的均是字...
    FlyingLittlePG閱讀 2,732評論 0 8
  • Python 是一種相當高級的語言樟结,通過 Python 解釋器把符合語法的程序代碼轉換成 CPU 能夠執(zhí)行的機器碼...
    Python程序媛閱讀 1,891評論 0 3
  • 列表 list 列表是由一系列特定元素組成的养交,元素和元系之間沒有任何關聯關系,但他們之間有先后順序關系 列表是一種...
    遇明不散閱讀 295評論 0 0
  • 沉默是金: 有些事自己知道就好,沒必要去追問刁笙,因為答案未必能接受破花;有些人自己認清就好,不值得去難過疲吸,因為感情不能去...
    之心污婆閱讀 942評論 0 0