#字串可以直接使用索引,不需要專門的變數引用
>>> '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無需掃瞄任何記錄即可迅速得到...