python-5

 List

 

 

 

by SID

List

a[0]=...

List是甚麼?

串列就像是一輛可以不停變長的火車

而整輛火車儲存在一個變數上

每個車廂都可以放不同的資料(不同類型也可)

第一個車廂編號:0   第二個編號:1 ...   以此類推

train = ["John","Amy","Vivi","Ella","Nemo"]
print(train)
#['John', 'Amy', 'Vivi', 'Ella', 'Nemo']
train = ["dog","cat",18,100]
print(train)
#['dog', 'cat', 18, 100]

宣告一個List

(1) 宣告空串列:串列名 = [ ]

(2) 宣告非空串列:串列名=[變數1, 變數2, ... ]

a = []
print(type(a))
# <class 'list'>

b = [1, 2, [3, 4]] #list裡面的list!

串列取值:list[n]

train = ["John","Amy","Vivi","Ella","Nemo"]
train[0]="John"
train[-1]="Nemo"

從第0項開始數,所以實際上的第一項 index 值是0

放負數的 index 代表由後數回來

但如果想找的 index 太大會回傳 IndexError

List新增資料

.append()

.insert(index,data)

for迴圈

輸入串列:list.append()

a = [123, "abc", 1.35]
a.append(456)#將456加進a串列
print(a) #[123, 'abc', 1.35, '456']

在串列的最後面新加一個資料

像醬:

輸入串列:list.insert(index,data)

a = [123, "abc", 1.35]
a.insert(2,456)#將456插入a串列中index=2的地方
print(a) #[123, 'abc', '456', 1.35]

在串列中間插入一個資料

像醬:

輸入串列:迴圈

a = list(range(10))
print(a)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

b = [i**3 for i in range(1, 6)]
print(b)
# [1, 8, 27, 64, 125]

串列 = list(range(n))

串列 = [ 一個運算式 for 疊代變數 in range() ]

串列的迴圈應用

a = [[i*j for i in range(1,6)] for j in range(2,7)]
print(a)
# [[2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25], [6, 12, 18, 24, 30]]

a = [i**2 for i in range(1, 10) if i%2==0]
print(a)
# [4, 16, 36, 64]

甚至給兩個變數也沒問題ㄉ

當然也能用 if 來寫

List取值

list[index]

list[::]

串列取值:list[n]

train = ["John","Amy","Vivi","Ella","Nemo"]
train[0]="John"
train[-1]="Nemo"

從第0項開始數,所以實際上的第一項 index 值是0

放負數的 index 代表由後數回來

但如果想找的 index 太大會回傳 IndexError

串列切片取值:list[r:l:i]

a = [1, 2, "sid", 7, 'QT', "sid"]
print(a[1:5:2]) #[2, 7]
print(a[::2]) #[1, 'sid', 'QT']
print(a[:3:]) #[1, 2, 'sid']

串列後加上[ r : l : i ]

可以在串列內從r到l-1每i項取一次(公差=i)

r空白代表  從最前面開始

l空白代表  取到最後面

i空白代表  公差=1

刪除List

.pop()

.remove()

移除串列指定位置的值:list.pop(x)

a = [123, "abc", 1.35]
a.pop(1)#將"abc"移出a串列
print(a) #[123, 1.35]

.pop(x)可以移除串列[x]的值

(若x未填入任何值,則刪除串列末項)

移除串列指定的值:list.remove(x)

a = [123, "abc", 1.35]
a.remove(1.35)#將1.35移出a串列
print(a) #[123, 'abc']

用.remove(x)移除串列中的x

(若不只一項,則移除最前項)

輸入List

.split()

輸入串列

a = [int(s) for s in input().split()]
print(a)#同行

a = []
for i in range(int(input())):#先輸入串列大小
  a.append(input())
print(a)#不同行

輸入資料通常會在同一行,

不同行的時候可以用另一個方式

掃描List

for a in list

掃描串列

listA = ["python","C++","HTML","BBS","bbs art","硬體","密碼學"]
for i in listA:
  print(i)
  
'''
python
C++
HTML
BBS
bbs art
硬體
密碼學

'''

for 變數 in 串列名:

....要重複執行的程式

算List中的...出現多少次

.count()

list.count()

尋找括號內的東西出現多少次

a = [22, 25, 29, 29, 25, 26]
print(a.count(29))
# 2

b = ["格列格里七世", "章程一"]
print(b.count("MR"))
# 0
# 好欸這樣程式不會回傳錯誤

題目練習

沒寫完的題目回家要練習喔!

加油!!!

好ㄟ結束了!

下星期一中午python小社喔!

 

下周課程預告:string(我猜

 

 

學妹來上python~回家要練習喔~