2018年12月27日 星期四

[Python學習筆記] python串列(list)的學習(三):串列進階的操作,串列元素的片段讀取,串列的切片(list slices)

串列(list)是一種有序的資料結構,在工作上常常會需要取得串列的某些元素,例如:前面幾個元素、某一片段的串列、後面幾個元素,這些取得串列的一部分就是串列的切片,下就是串列切片的語法: 
串列變數名稱[起始索引值:結束索引值]

注意:上面的語法會取得 起始索引值 到 結束索引值-1 的子串列,也就是不包含結束索引值的元素值,如果要包含結束索引值的元素值,記得加1

範例1:取得索引值從1到5的子串列
            week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
            days = week[1:6]  #注意記得要加1 (5+1),因為要包含索引值為5的值

執行結果:days 的值為 ['星期一', '星期二', '星期三', '星期四', '星期五']

還有以下進階用法:

(1)串列變數名稱[起始索引值:結束索引值:step]:取得不連續子串列
 
    注意:上面的語法中step,為起始索引值(含)開始遞增(減)step值所取得的不連續子串列

 
    範例2:取得索引值從1到5中每隔2的子串列
                 week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
                 days = week[1:6:2] #注意記得要加1 (5+1),因為要包含索引值為5的值

    執行結果:days 的值為 ['星期一', '星期三', '星期五']

(2)串列變數名稱[:n] : 取得前n個元素的子串列
 
    範例3:取得前5個元素的子串列
                week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
                days = week[:5]

    執行結果:days 的值為 ['星期日', '星期一', '星期二', '星期三', '星期四']

(3)串列變數名稱[n:]: 取得索引值從n到最後一個元素的子串列
   
    範例4:取得從第2個元素到最後一個元素的子串列
                week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
                days = week[2:]

    執行結果:days 的值為 ['星期二', '星期三', '星期四', '星期五', '星期六']

(4)串列變數名稱[-1]: 取得最後一個串列元素值
  
    範例5:取得最後一個串列元素值
                week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
                day = week[-1]

    執行結果:day 的值為 ['星期六']

(5)串列變數名稱[:-n] : 取得索引值從0到最後倒數第n-1的元素的子串列

    範例6:取得從開始到最後倒數第3個串列元素值的子串列
                week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
                days = week[:-2] #注意記得要加1 (-3+1),因為要包含最後倒數第3個的值

    執行結果:days 的值為 ['星期日', '星期一', '星期二', '星期三', '星期四']

(6)串列變數名稱[-n:] : 取得最後n個元素的子串列

    範例7:取得最後3個元素的子串列
                week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
                days = week[-3:]

    執行結果:days 的值為 ['星期四', '星期五', '星期六']

完整程式碼如下:
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Dec 27 10:32:37 2018
  4. @author: 軟體罐頭
  5. """
  6. week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
  7. print('week=',week,'\n')
  8. print('範例 1:取得索引值從1到5的子串列')
  9. days week[1:6]
  10. print('days=',days
  11. print()
  12. print('範例2:取得索引值從1到5中每隔2的子串列')
  13. days week[1:6:2]
  14. print('days=',days)
  15. print()
  16. print('範例3:取得前5個元素的子串列')
  17. days week[:5]
  18. print('days=',days)
  19. print()
  20. print('範例4:取得從第2個元素到最後一個元素的子串列')
  21. days week[2:]
  22. print('days=',days)
  23. print()
  24. print('範例5:取得最後一個串列元素值')
  25. day week[-1]
  26. print('day=',day)
  27. print()
  28. print('範例6:取得從開始到最後第3個串列元素值的子串列')
  29. days week[:-2]
  30. print('days=',days)
  31. print()
  32. print('範例7:取得最後3個元素的子串列')
  33. days week[-3:]
  34. print('days=',days)
執行結果如下: