四.Python串列
這章節要學習串列(list)以及多元組(tuple).
這兩個都能放置多個值,大大簡化程式編程。
由於串列也能放置其他串列,利用這一點可讓資料用階層式結構放置。
另外也會學習method(方法),算是與特定資料型別綁在一起的函式
1.串列資料型別
串列是一個值,當中包含多個值。串列本身可以傳入函式,
跟其他值一樣,而非只串列內的東西。
串列是由兩個中括號包起來,裏頭值用逗號分開,類似長這樣
[1,2,3,4]
2.串列之索引足標
假設串列為qoo=['cat','dog','orange']
串列的索引足標是以0為起始,然後接續。
動手試試:
先輸入 按enter
qoo=['cat','dog','orange']
再輸入
qoo[0]
結果
'cat'
動手試試2:
先輸入 按enter
qoo=[['cat','dog','orange'],['我是米','奇']]
再輸入
qoo[0][1]
猜猜看結果是什麼?
結果
'dog'
因為它(qoo[0][1])代表的是,第一個串列當中的第二個值~~
動手試試3(負數值練習):
先輸入 按enter
qoo=['cat','dog','orange']
再輸入
qoo[-1]
結果
'orange'
以上練習我們學習到串列可以用正數取得,也可以負數取得,
但是正數是以0為起始,負數是-1為起始。
接下來我們該來練習,不只一次取得一個值(握拳)
人生有時候就是想多拿一點啦!!(點頭)
當你想在串列當中多拿一點的時候,就稱為切片,我覺得聽起來超像生魚片的。
#qoo[1:4] 帶有切片的串列(兩個整數)
在切片當中,第一個是切片的起始足標,第二個整數是切片的結尾足標
切片由起始足標算到結尾足標,但,"不包含"結尾足標!!!
動手try:
先
qoo=['e','r','t','y']
後
qoo[0:4]
結果:
['e', 'r', 't', 'y']
動手try2:
先
qoo=['e','r','t','y']
後
qoo[1:3]
結果:
['r', 't']
動手try3:
先
qoo=['e','r','t','y']
後
qoo[0:-1]
結果:
['e', 'r', 't']
融會貫通切片之後,我們就來學學如何少打一點字的方法吧!
俗話說的好,越聰明才越能偷懶
動手try:
先
qoo=['e','r','t','y']
後輸入這三個 一次一行 輸入完就按enter
qoo[:2]
qoo[1:]
qoo[:]
三個依序結果為
['e', 'r']
['r', 't', 'y']
['e', 'r', 't', 'y']
講了這麼多都是關於搜尋既定的串列資料。
接下來我們熱血的學一下如何將串列內的資料替換吧!!
動手try:
先
qoo=['e','r','t','y']
後
qoo[1]='R'
後
qoo
結果
['e', 'R', 't', 'y']
就是這麼輕鬆容易!!
那接下來練習把兩個串列變成一個串列
動手try:
先
qoo=['e','r','t','y']
後
qoo=qoo+['a','v']
後
qoo
結果:
['e', 'r', 't', 'y', 'a', 'v']
接著學刪除
動手try:
先
qoo=['e','r','t','y']
後
del qoo[2]
後
qoo
結果:
['e', 'r', 'y']
學到這裏我覺得好累了
但是看起來這第四章節還沒結束(崩潰了)
好,接著就是運用串列了....
目標情境是,詢問使用者家裡養的貓的名子
GO
動手try:
while True:
print('Enter name of cat'+str(len(catName)+1)+
'或是按enter離開')
name=input()
if name=='':
break
catName=catName+[name]
print('貓叫做:')
for name in catName:
print(''+name)
結果就讓你自己試試吧,很好玩的!!
3.在迴圈內使用串列
必學必殺技!!!
前面學那麼多串列頂多都是扎馬步,要比別人厲害,
就是要學一些必殺技
在Python有個常用的技巧
在for迴圈中用range(len(somelist))來幫作跌代重複的條件
會以串列的長度為range的足標 執行迴圈
看不懂這串字就直接手動試試
動手try:
qoo=['e','r','t','y']
再
for i in range(len(qoo)):
print(str(i)+qoo[i])
結果:
0e
1r
2t
3y
4.in 和not in運算子
如字面上意思,運用這個你就可以知道
某個值在串列當中存不存在
動手try:
qoo=['e','r','t','y']
print('輸入英文字母')
name=input()
if name not in qoo:
print('qoo裡面沒有'+name)
else:
print(name+'這是qoo')
5.增強型指定運算子
@增強型 @普通
qoo+=1 qoo=qoo+1
qoo-=1 qoo=qoo-1
qoo*=1 qoo=qoo*1
qoo/=1 qoo=qoo/1
qoo%=1 qoo=qoo%1
6方法(method)
method跟函式很像,只是方法是依據值來呼叫使用。
舉例,假設串列值存在變數qoo中,我們在串列上呼叫index()方法
像這樣qoo.index('hi')
方法接在變數值後面,並以句點分隔
每種資料型別都有自己的方法
現在要來介紹串列這種資料型別的方法
(1)index()
(2)append(),insert()
(3)remove()
(4)sort()
=====
(1)index():用來搜尋
動手:
qoo=['e','r','t','y']
再
qoo.index('t')
結果
2
#如果串列中有兩個相同值,會搜尋先遇到的值
(2)append(),insert():用來新增值
兩者區別:
append():加尾端
insert():加任意處
動手:
qoo=['e','r','t','y']
再
qoo.append('qq')
動手:
qoo=['e','r','t','y']
再
qoo.insert(2,'qq')
(3)remove()刪除
動手:
qoo=['e','r','t','y']
再
qoo.remove('t')
(4)sort()排序
>>> qoo=['e','r','t','y']
>>> qoo.sort()
>>> qoo
['e', 'qq', 'r', 't', 'y']
7.串列P.K字串P.K多元組(建議你看書 會比較好懂)
串列:可變資料型別
字串:不可變資料型別
多元組:不可變資料型別
裝有多元組或字串的變數可被其他多元組跟字串取代,但是這不是原地修改的值
