1. 程式人生 > >【Python】高階特性之切片(slice)

【Python】高階特性之切片(slice)

    在瞭解什麼是切片之前,先考慮一個問題:給定一個字串或者陣列,在Python中如何取其中的一部分資料。比如說我們要取前五個數或者前五個字元。在C++或者Java中底層都封裝了很好的庫函式給我們直接呼叫,比如Java中有subString,那麼在Python中,我們首先能想到最笨的方法就是把這前五個元素列舉出來:

list=[1,2,3,4,5,6,7,8,9]
print(list[0], list[1], list[2], list[3], list[4])
    然後我們稍微想一下,好像能改進,可以用迴圈,於是有如下程式碼:
list=[1,2,3,4,5,6,7,8,9]
for i in range(5):
    print(list[i])

    但是,這樣還是太麻煩了,畢竟都用上了迴圈。其實,Python是提供了一種切片機制,當我們有這種需求時,能極大地簡化我們的程式碼:
list=[1,2,3,4,5,6,7,8,9]
print(list[0:5])
    中括號[]中第一個元素表示起始偏移量,第二個元素表示結束偏移量,但是這裡需要注意一點,這個範圍是左閉右開的,即[0:5]=0,1,2,3,4。如果第一個偏移量是0,程式碼也可以簡化為list[:5]。同時也支援隔幾個元素取一次,比如每兩個元素取一次可以寫成list[0:5:2]=[1,3,5]。

    我們知道,Python支援list中取倒數第幾個元素,那麼類似的,也支援倒數取切片。

list=[1,2,3,4,5,6,7,8,9]
print(list[-3:-1])  #結果為[7,8]
    同時,tuple也是一種特殊的list,也可以使用切片操作,切片返回的結果也是tuple,字元串同樣也行,下面舉兩個簡單的例子:
list = (1,2,3,4,5,6,7,8,9)
str = '123456789'
print(list[0:5])  #結果為(1,2,3,4,5)
print(str[0:5])  #結果為12345







相關推薦

Python高階特性切片slice

    在瞭解什麼是切片之前,先考慮一個問題:給定一個字串或者陣列,在Python中如何取其中的一部分資料。比如說我們要取前五個數或者前五個字元。在C++或者Java中底層都封裝了很好的庫函式給我們直接呼叫,比如Java中有subString,那麼在Python中,我們首先

pythonleetcode 125. Valid Palindrome easy

125. Valid Palindrome (easy) Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring

pythonleetcode 189. Rotate Array easy

189. Rotate Array (easy) Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1:

pythonre模組的用法2—— 提取字串中括號內的內容

Python使用re模組正則提取字串中括號內的內容示例 這篇文章主要介紹了Python使用re模組正則提取字串中括號內的內容,結合例項形式分析了Python使用re模組進行鍼對括號內容的正則匹配操作,並簡單解釋了相關修正符與正則語句的用法,需要的朋友可以參考下 本文例項講述

轉載iPhone開發NSNotificationCenter通知的使用方法

iPhone軟體開發的時候會遇到這種情況:開啟APP後會在後臺執行某個方法,例如下載檔案,下載完成後可能需要呼叫某個方法來重新整理介面,這時候可能沒法在下載的函式中回撥。NSNotificationCenter(通知)是一個很好的選擇。 通知使用起來灰常的簡單: 1、定義通知:[[NSNotifica

Java高階特性列舉

01.Enum不可以有public或者protected的構造方法,只能是private或friendly(就前面不用修飾符),這樣可以保證客戶程式碼不能新建一個Enum的例項,我們也不需要例項化Enum物件。    Enum定義的列表成員跟介面一樣都是public,sta

JAVA面向物件高階特性繼承1常見問題解答

1、什麼是繼承? 答:如果說A是一個B,則我們說A繼承自B。通過繼承來實現程式碼的複用。 2、Java中如何實現繼承?  答:Java類通過extends關鍵字實現繼承,所有的類都間接或者直接繼承自Object類。 3、Java中,有繼承關係時,變數隱藏的原則?  答:子類

Java基礎型別float

特徵 float 資料型別是單精度、32位、符合IEEE 754標準的浮點數;float 在儲存大型浮點陣列的時候可節省記憶體空間;預設值是 0.0f;浮點數不能用來表示精確的值,如貨幣;flo

python打飛機小遊戲

首先宣告一點,這篇部落格完全參照了小甲魚的《零基礎入門學習Python》教學視訊 打飛機小遊戲思路: 1、載入背景音樂 2、播放背景音樂(單曲迴圈) 3、我方飛機誕生 interval = 0(

Java基本型別long

long 資料型別是 64 位、有符號的以二進位制補碼錶示的整數;最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,

Zookeeper原始碼分析伺服器

一、前言   前面闡述了伺服器的總體框架,下面來分析伺服器的所有父類ZooKeeperServer。 二、ZooKeeperServer原始碼分析   2.1 類的繼承關係  public class ZooKeeperServer implements SessionE

轉載Flume學習Flume的基礎介紹

必須 4.3 bin tar.gz 開源 暴露 linu ror 失敗 討論QQ:1586558083目錄一、背景二、Flume的簡介三、Flume NG的介紹3.1 Flume特點3.2 Flume的一些核心概念3.3 Flume NG的體系結構3.4 Source3.5

Selenium2+python自動化56-unittest斷言assert轉載

用例 lists tca enc whether set .py exce req 前言 在測試用例中,執行完測試用例後,最後一步是判斷測試結果是pass還是fail,自動化測試腳本裏面一般把這種生成測試結果的方法稱為斷言(assert)。 用unittest組件測試用例的

Python小白學習函式函式返回值函式引數

寫在前面: 昨天早睡之後,感覺今天已經恢復了百分之八十的樣子 又是活力滿滿的小夥郭 今日份雞湯: 我始終相信,在這個世界上,一定有另一個自己,在做著我不敢做的事,在過著我想過的生活。-------宮崎駿 函式 一、函數出現的背景 在學習函式之前,一直遵循:面向過程程式設計,即:根據業務邏輯從上到

Python小白學習函數函數返回值函數參數

函數返回值 列表 默認參數 print 關鍵字 內部 if條件語句 pre 提取 寫在前面: 昨天早睡之後,感覺今天已經恢復了百分之八十的樣子 又是活力滿滿的小夥郭 今日份雞湯: 我始終相信,在這個世界上,一定有另一個自己,在做著我不敢做的事,在過著我想過的生活。-----

Python小白學習十三遞迴呼叫

一、遞迴呼叫定義 在函式內部,可以呼叫其他函式。 如果在呼叫一個函式的過程中直接或間接呼叫自身本身,則稱為遞迴呼叫 從某種意義上來說,遞迴呼叫可以實現無限迴圈 二、遞迴呼叫的特性 必須有一個明確的結束條件 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少 遞迴效率不高,遞迴層次

Python小白學習十三遞歸調用

結束 style mon port 特性 小白 好的 就是 實例 一、遞歸調用定義 在函數內部,可以調用其他函數。 如果在調用一個函數的過程中直接或間接調用自身本身,則稱為遞歸調用 從某種意義上來說,遞歸調用可以實現無限循環 二、遞歸調用的特性 必須有一個明確的結束條件

Python高階特性——切片Slice

摘錄廖雪峰網站 定義一個list: 1 L = ['haha','xixi','hehe','heihei','gaga']  取其前三個元素: >>> L[0],L[1],L

Python小白學習類和物件列表列表相關功能

類和物件 (簡單的瞭解一下這個概念,初步有個印象,這個概念很重要,後面會著重講) 類:具有相同屬性和方法的物件的集合;      物件:萬物皆物件; 概念很抽象(每當我看不到概念的時候,我就會通過舉例來理解) 我們說的數字(int)、字串(str)以及今天學習的列表(list)就是類 list # 類

Python小白學習字典字典的功能布林值

字典(dict) 基本結構: d = {key1 : value1, key2 : value2 } dict = {'K1': 1, 'K2': 2, 'K3': '3'} key : value稱為字典的鍵值對。 每個鍵 key和值value 之間用冒號 : 分割 每個鍵值對(也就是字典的一個元素)