四.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多元組(建議你看書  會比較好懂)
串列:可變資料型別
字串:不可變資料型別
多元組:不可變資料型別

裝有多元組或字串的變數可被其他多元組跟字串取代,但是這不是原地修改的值

文章標籤
全站熱搜
創作者介紹
創作者 Zoe 的頭像
Zoe

Zoe的生活分享(包含自我成長,學習,旅遊)

Zoe 發表在 痞客邦 留言(0) 人氣(9)