Python3之字串str、列表list、元組tuple的切片操作
切片操作slice
首先要明確一點:字串和元組是不可變的可迭代物件,列表是可變的可迭代物件
對於可變不可變,就引起了能否賦值的問題
例如:
>>> s = [1,2,3] # 列表 可變
>>> s[0] = 100
>>> s
[100, 2, 3]
>>> a = (1,2,3) # 元組 不可變
>>> a[0]
1
>>> a[0]=100
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
a[0]=100
TypeError: 'tuple' object does not support item assignment
>>> b = 'helloworld' # 字串 不可變
>>> b[0]
'h'
>>> b[0]=k
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
b[0]=k
NameError: name 'k' is not defined
以上是索引賦值,索引都不能賦值的,切片就也不能賦值了,好了,進入正題吧
切片的定義
從序列中取出相應的元素重新組合成一個新的序列
語法
s[(開始索引b):(結束索引e):(步長s)]
說明
- 切片切下的位置:0 代表第一個元素,-1代表最後一個元素
- 結束索引是切片的終止索引(但不包括終止點)
- 步長是切片每次獲取完當前元素後移動的偏移量
3.1. 步長預設為 1
3.2. 當步長是正數時,取正向切片,開始索引預設為 0 ,結束索引為最後一個元素的下一個位置
3.3. 當步長為負數時,取反向切片,開始預設為最後一個,結束位置是第一個的前一個
舉個栗子:
>>> s = 'helloworld'
>>> s[2]
'l'
>>> s[2:3] # 索引從2開始,到3的前一個結束
'l'
>>> s[0:5:2]
'hlo'
>>> s[0:5:-2] # 為什麼呢? 步長為負,開始索引必須大於終止索引才有資料讓我們切啊!!
''
>>> s[5:0:-2]
'wle'
>>> s = [1,2,3,4,56,7]
>>> s[2::2]
[3, 56]
>>> s = (1,2,3,4,5,6)
>>> s[2::2]
(3, 5)
切片賦值
切片賦值只對可變序列有效,即只有列表了
舉個栗子:
# 此示例示意字串的切片賦值
>>> s = 'hello world'
>>> s[1:2] = 'w'
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
s[1:2] = 'w'
TypeError: 'str' object does not support item assignment
很明顯,失敗了
# 此示例示意元組的切片賦值
>>> s = (1,2,3,5,6,3)
>>> s[1:2]=123
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
s[1:2]=123
TypeError: 'tuple' object does not support item assignment
我們不難發現,錯誤資訊和字串是相同的,再看列表怎麼樣
>>> s = [1,2,3,4,5,6]
>>> s[1:2]=100 # 看報錯資訊是讓賦值可迭代物件,但字串和元組直接就是不讓賦值
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
s[1:2]=100
TypeError: can only assign an iterable
>>> s[1:2]=[100000]
>>> s
[1, 100000, 3, 4, 5, 6]
在列表開始位置插入資料
>>> s = [1,2,3]
>>> s[0:0]=[123]
>>> s
[123, 1, 2, 3]
如果是[0:1]會是什麼效果呢?
>>> s = [1,2,3]
>>> s[0:1]=[123]
>>> s
[123, 2, 3]
這樣就把索引為 0 的元素給替換掉了
在指定索引處插入資料
>>> s = [1,2,3]
>>> s[1:1] = [222222] # 在索引為 1 的位置插入資料
>>> s
[1, 222222, 2, 3]
在最後插入資料
>>> s = [1,2,3]
>>> s[len(s):] = [111]
>>> s
[1, 2, 3, 111]
因為我們不知道這個列表到底有多長,可以先計算其長度,再賦值
本節完
相關文章
- python list(列表)和tuple(元組)Python
- python列表(list)和元組(tuple)詳解Python
- python基礎之列表list元組tuplePython
- Python 選列表 list 還是元組 tuple 的思考Python
- list和tuple元組的區別
- python list tuple str dic series dataframePython
- python3 筆記13.列表元組的切片和支援的運算方法Python筆記
- python 切片獲取list、tuple中的元素Python
- .NET Framework 4.0之Tuple(元組)Framework
- python list列表基礎(元組)Python
- python列表元組的操作Python
- Swift元組(Tuple)Swift
- Laravel str 字串操作Laravel字串
- python之tuple元組,基礎篇Python
- Python tuple(元組)Python
- Python元組tuplePython
- Python基礎總結之第六天開始【認識List:列表】【認識Tuple:元組】【還有他們基本的操作】(新手可相互督促)Python
- 04_python——元組(tuple)、字串 、 bytes bytearrayPython字串
- Python列表切片操作Python
- Python中元組tuple的作用以及tuple和list的轉換Python
- python--元組tuplePython
- Python 建立元組tuplePython
- Python元組、列表、集合及列表去重操作Python
- python切片 利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法Python函式字串
- 切割切片組裝字串字串
- python學習:元組tuplePython
- Python 學習之元組列表Python
- python基礎之元組,列表Python
- 【美妙的Python之五】變數:列表、元組、元字典Python變數
- Python3組合資料型別(元組、列表、集合、字典)語法Python資料型別
- python3 筆記14.列表元組字典支援的函式Python筆記函式
- python學習:字串切片操作Python字串
- Python資料型別(數字,字串,[列表],(元組),{字典:字典值},{列表,列表2})Python資料型別字串
- python3 列表轉化成字串Python字串
- Python 列表、元組、字典及集合操作詳解Python
- Python3 列表list合併的4種方法Python
- Python資料型別(元組tuple)Python資料型別
- python資料結構元組tuplePython資料結構