不知道大家吃飽睡飽嗎?一個禮拜就這樣來到Happy Friday!
但是鐵人的學習是不能停下來啊啊!
我們今天來介紹一個好用的變數型態!
對你迷有看錯捏~你給我看這個?中午時間餓到可以把櫃子給吃了
冷靜想一下!這排櫃子的每個位置都是一個置放空間,想放什麼就放啥!藏書、藏禮物藏私房錢隨你開心!
「右邊數來第2個櫃子」...這一類的敘述應該很常出現吧!
But!But!如果有100,1000個櫃子...那要怎麼數?
這時候為了精準描述我們要拿的位置,會直接給每個櫃位編號!比如由左到右依序為1,2,3....。
☞這就是所謂的List
看起來應該更清楚明瞭List
吧!
我們在這個綠色的櫃子,每一個位置我們叫做他是一個元素(element),裡面可以存放一個value,value是什麼型態都可以,而每一個位置都會有一個編號(index)。
假設有list L1:
L1[index]
:尋找L1中index位置存放的值
L1.index(value)
:尋找value在L1中2第一個位置的index
L1.append(value)
:在現有的L1中,最後一個位置後面新增一個位置並指定為value
L1.remove(value)
:在現有的L1中,遇到第一次value時,將其移除
L1.pop(index)
:將L1中index位置的value拿掉
del(L1[index])
:將L1中index位置的value拿掉
L1.count(value)
:統計value在L1中出現幾次
len(L1)
:L1中有多少個value
讓我來舉個例子吧!
L=[0]*2
#output:L=[0,0]
L.append(3)
#output:L=[0,0,3]
K=[0,0,3,4,1,2]
K.pop(4)
#output:L=[0,0,3,4,2]
K.count('3')
#output:0
del(L[2])
#output:L=[0,0,4,2]
看到這裡你應該覺得list操作其實不難嘛!!
什 (三) 麼 (小)?還有啊?
當然啊~還有一些特殊的規則囉!
L=[3,4,5,7,8,9]
L[-3] #output:7
L=[3,4,5,7,8,9]
L.pop() #output:L=[3,4,5,7,8]
L[i:k:step]
從i到k-1的element,以step為間距,因此若沒填入數字則是忽略L=[1,5,2,7,8,4]
L[1:4] #output:[5,2,7]
L[1:] #output:[5,2,7,8,4]
L[1::] #output:[5,2,7,8,4]
L[:4] #output:[1,5,2,7]
L[::4] #output:[1,8]
<class 'range'>
。註:若要讓range(i,j,k)成為list,可以使用list(range(i,j,k))作為使用
好啦~我開始肚子餓了!再不吃飯我就要把電腦吃掉了QQ,老樣子來思考一個比較間單的問題:
Q. 現在有一個陣列[5, 3, 4, 9, (3,5), ['I', 'T', 'iron'], 'man']
請問這裡面有幾個element?
若取出element只有數字的部分,接著把最後一個和第二個數字交換,則這一個只有數字的list為何?
昨天的參考答案在這裡,你對了嗎?
感謝froce大大的更正,還有不對的地方麻煩大家幫忙了
補充一下:
1.第3段code是錯的,你對list的切片(slice)理解錯了。
L=[1,5,2,7,8,4]
L[1:4] #output:[5,2,7]
L[1::] #output:[5,2,7,8,4]
L[1:] #output:[5,2,7,8,4]
L[::4] #output:[1,8]
L[:4] #output:[1,5,2,7]
[start:end:step],由於step可以選填,所以可以省略成
[start:end]
L[1::] #output:[5,2,7,8,4] 從1開始,到結尾,間隔為1
L[1:] #output:[5,2,7,8,4] 從1開始,到結尾,間隔為1
L[::4] #output:[1,8] 從0開始,到結尾,間隔為4
L[:4] #output:[1,5,2,7] 從0開始,到4,間隔為1
2.因為python2已經過時了,我只提python3的狀況。
在python3中,range()是物件(class range),他實現了迭代器,所以可以迭代。
如果要轉換成list,可以用下面兩種方式:
[i for i in range(4)]
list(range(4))
3.list是一種可變的變數型態,拿來當參數時要注意。
感謝froce大大的更正。