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~回家要練習喔~