Python 索引總結

2021-08-23 14:16:39 字數 4278 閱讀 2508

#字串可以直接使用索引,不需要專門的變數引用

>>> 'hello world!'[0]

'h'>>> 'hello world!'[11]

'!'>>> 'hello world!'[-1]

'!'>>> 'hello world!'[-11]

'e'#注意以下情況會出現越界

>>> 'hello world!'[12]

traceback (most recent call last):

file "", line

1, in

indexerror: string index out of range

>>> 'hello world!'[-12]

'h'>>> 'hello world!'[-13]

traceback (most recent call last):

file "", line

1, in

indexerror: string index out of range

負數索引與正數索引之間存在乙個規律

當正數索引+負數索引的絕對值=元素的個數,它們所指的是同乙個元素。

# hello world!:總共有12個元素,含空格和標點符號

print('hello world!'[8]) # r

print('hello world!'[-4])# r

分片用於擷取某個範圍內的元素,通過:來指定起始區間(左閉右開區間包含左側索引值對應的元素,但不包含右測索引值對應的元素)。典型的使用方法如下:

#注意不包括右邊索引值對應的元素,索引下標從0開始

>>> num = [1,2,3,4,5,6,7,8,9,10]

>>> num[3]

4>>> num[6]

7>>> num[3:6]

[4, 5, 6]

#注意右邊界,左閉右開區間

>>> num[3:9]

[4, 5, 6, 7, 8, 9]

#右邊越界,剛好是10對應的下乙個索引值

>>> num[3:10]

[4, 5, 6, 7, 8, 9, 10]

#右邊越界但只取到最後乙個元素

>>> num[3:11]

[4, 5, 6, 7, 8, 9, 10]

#num = [1,2,3,4,5,6,7,8,9,10]

>>> num[-3:-1]#注意是不包含最後乙個元素的

[8, 9]

>>> num[-4:-1]

[7, 8, 9]

>>> num[-10:-1]#同樣滿足左閉右開區間

[1, 2, 3, 4, 5, 6, 7, 8, 9]

#注意右邊界

>>> num[-10:0]

>>> num[-5:-1]

[6, 7, 8, 9]

#注意右邊界

>>> num[-5:]

[6, 7, 8, 9, 10]

>>> num[-5:1]

>>> num[3:1]

>>> num[3:-1]

[4, 5, 6, 7, 8, 9]

#取最右3個元素

>>> num[-3:]

[8, 9, 10]

#取最左3個元素

>>> num[:3]

[1, 2, 3]

#可以加入step length

>>> num[1:10:3]

[2, 5, 8]

>>> num[0:10:3]

[1, 4, 7, 10]

#起始位置預設為最左和最右,但不包括最右的元素

>>> num[::2]

[1, 3, 5, 7, 9]

>>> num[0:9:1]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> num[0:10:1]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#如果step length為0,會報錯,也就是說步長不可以為0

>>> num[1:5:0]

traceback (most recent call last):

file "", line 1, in

valueerror: slice step cannot be zero

#如果步長為負數,表示從右向左提取元素

#注意不包括6對應的元素

num[10:6:-1]

[10, 9, 8]

#倒序輸出

>>> num[10::-1]#或者 num[::-1]

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

#從最左邊開始

>>> num[:-3:1]

[1, 2, 3, 4, 5, 6, 7]

>>> num[:3:1]

[1, 2, 3]

#從最右邊開始

>>> num[:3:-1]

[10, 9, 8, 7, 6, 5]

注意:資料的一些細微區別

num = [1,2,3,4,5,6,7,8,9,10]

num1 = num[-1] # 輸出:10 type:int

num2 = num[-1:]# 輸出:[10] type:list

總結:

分片包括起始索引對應的元素,但不包括終止索引對應的元素,索引為正值時可以發生越界但只會取到最後乙個元素。如果索引值為負值,則表示從最右邊元素開始,此時需避免索引越界。

表示兩個序列的相連,但是僅對相同型別的序列進行連線操作。舉例:

#列表

>>> [1,2,3] + [3,2,1]

[1, 2, 3, 3, 2, 1]

#字串

>>>

'hi' + ',' + 'baby'

'hi,baby'

#元組(tuple)

>>> ('this','is','a') + ('test','case')

('this', 'is', 'a', 'test', 'case')

#如果序列型別不一致,則會報錯

>>>

'hi' + [1,2]

traceback (most recent call last):

file "", line 1, in

typeerror: cannot concatenate 'str'

and'list' objects

真題:

var1 = (1,2,3)

var2 = var1 * 2 # (1, 2, 3, 1, 2, 3)

var3 = var2 + "4,5,6" #報錯: file "c:/users/dell/test1.py", line 22, in var3 = var2 + "4,5,6" typeerror: can only concatenate tuple (not "str") to tuple

var4 = var1 + (4,5,6) # (1, 2, 3, 4, 5, 6)

總結:序列支援『+』運算,表示兩個相同型別的序列的連線。

『*』運算表示生成乙個元素重複多次的序列

>>>print('hi '*5)

'hi hi hi hi hi '

>>> print("hello" * 3)

'hellohellohello'

>>> (1,2,3) * 4

# tuple型別

(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)

>>> [1,2,3] * 4

# list型別

[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

>>> [none]*5

# none

[none, none, none, none, none]

>>>

4 * [1,2,3] # 支援交換律

[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

乘法表示將指定序列重複n次以生成乙個新的序列,none可以用來初始化序列。

mysql 索引總結 mysql索引總結

mysql中每乙個表都有乙個聚簇索引clusted index,該所索引是預設建立的,除此之外的表上的每乙個非聚簇索引都是二級索引,又叫輔助索引 secondary indexes 以innodb來說,每個innodb表具有乙個特殊的索引稱為聚集索引,如果您的表上定義有主鍵,該主鍵索引是聚集索引,如...

字首索引 mysql索引總結

擊上方藍色 程式設計師白楠楠 選擇 設為星標 出處 資料結構 常見的資料結構有 雜湊表 有序陣列和搜尋樹 雜湊表是一種以鍵 值 key value 儲存資料的結構,我們只要輸入待查詢的值即 key,就可以找到其對應的值即 value。雜湊的思路很簡單,把值放在陣列裡,用乙個雜湊函式 把 key 換算...

mysql 索引總結

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到...