PYHON中的切片
Python中的切片容易混淆,這里總結一下自己的看法
切片的語法
| 1 | a?=?[1,2,3,4] | ||
| 2 | x?=?a[1:2]????#實際上執(zhí)行的是 a.__getitem__(slice(1,2,None)) | ||
| 1 | slice([start], stop[, step] | ||
?
| 2 | ? | |
| 3 | step的符號表示一種方向的含義 | |
?
| 4 | +:從左向右看,start默認是0,stop默認是索引最大值 |
| 5 | -:從右向左看,start默認是索引最大值,stop默認是0 |
?
| 1 | 1.先看第三個參數(shù),如果該數(shù)為正,則從前往后數(shù),如果為負,則從后往前數(shù),如果非1,則是跳步來數(shù)(1表示走一步,跳0步) | |
| 2 | 2.PYTHON總是左開右閉的,也就是說第一個參數(shù)要包括,第二個參數(shù)不包括 | |
?
| 3 | 3.如果第一個參數(shù)沒填,則自動設為第一個參數(shù)(根據(jù)第三個參數(shù)的正負判斷是整數(shù)第一個還是倒數(shù)第一個) |
| 4 | 4.如果第二個參數(shù)沒填,則自動設定為最后一個參數(shù)(根據(jù)第三個參數(shù)的正負判斷是整數(shù)第一個還是倒數(shù)第一個 |
?
| 5 | ??另外這個參數(shù)不會包括進去【左開右閉】) |
示例
| 01 | >>> s?=?[0,?1,?2,?3,?4,?5,?6,?7,?8,?9] | |
| 02 | >>> s[5:0:-1] | |
?
| 03 | [5,?4,?3,?2,?1] | |
| 04 | >>> s[5:4:-1] | |
?
| 05 | [5] | |
| 06 | >>> s[:3:-1] | |
?
| 07 | [9,?8,?7,?6,?5,?4] | |
| 08 | >>> s[0:3:-1] | |
?
| 09 | [] | |
| 10 | >>> s[9::-1] | |
?
| 11 | [9,?8,?7,?6,?5,?4,?3,?2,?1,?0] | |
| 12 | >>> s[::2] | |
?
| 13 | [0,?2,?4,?6,?8] |
代碼分析
| 01 | 首先定義 s?=?[0,?1,?2,?3,?4,?5,?6,?7,?8,?9] | |
| 02 | ? | |
?
| 03 | Python中正索引是從0開始的,負索引從-1開始,索引1對應1, 而索引-1對應9. | |
| 04 | ? | |
?
| 05 | s[5:0:-1]:?1.step?為負數(shù),從右往左輸 | |
| 06 | ???????????2.從索引?5?開始 到索引0?結束, 但不包括索引0?, 輸出為 [5,?4,?3,?2,?1] | |
?
| 07 | ? | |
| 08 | s[:3:-1]:?1.step?為負數(shù),從右往左輸出 | |
?
| 09 | ???????????2.step?為負數(shù),[start]默認值為索引最大值, 即?9, 那么這個切片等價于s[9:3:-1] |
| 10 | ???????????3.從索引?9?開始 到索引3?結束, 但不包括索引3?, 輸出為[9,?8,?7,?6,?5,?4] |
?
| 11 | ? | |
| 12 | s[9::-1]:??1.step?為負數(shù),從右往左輸 | |
?
| 13 | ???????????2.step?為負數(shù),[stop]默認值為0, 那么這個切片等價于s[9:0:-1],輸出為[9,?8,?7,?6,?5,?4,?3,?2,?1,?0] | |
| 14 | ? | |
?
| 15 | s[::2]:????1.step?為正數(shù),從右往左輸 | |
| 16 | ???????????2.step?為正數(shù),start默認是0,stop默認是索引最大值,那么這個切片等價于s[0:9:2 | |
?
| 17 | ???????????3.step?為2表示走兩步, 即中間間隔一個字符, 輸出為[0,?2,?4,?6,?8] |
?
轉載于:https://blog.51cto.com/bsbforever/1593708
總結
- 上一篇: 操作系统随笔(二)
- 下一篇: 计算机考研复试面试题整理