SlideShare a Scribd company logo
1 of 27
Download to read offline
串 列
簡要 python 學習講義
串列 : list
 由排成一列的元素組成
52
a = [ 1 , 2 , 3 , 4 ] # 四個元素
b = [ 8.3 ] # 一個元素
c = [ 2 , ”cat” , 3.4 ] # 串列元素可以不同型別
d = [ [ 1 , 2 ] , 3+2j ] # 串列元素也可以為串列
e = [] # 空串列
 串列長度: len()
a = len([9,4]) # a 為 2
b = [ [8,5,6] , ”dog” ]
c = len(b) # c 為 2
 同時設定數個串列
>>> a , b = [5,7] , [”cat”,”ox”] # a = [5,7] , b = ["cat","ox"]
# 混合型別設定
>>> c , d , e = [3] , 87 , ”ox” # c = [3] , d = 87 , e = "ox"
國立中央大學數學系
串列下標 : 取出單一元素
 串列元素可用下標取得
53
a = [ 9 , ”中央” , ”math” , 2.5 , [2,8] ]
a 9 ”中央” ”math” 2.5 [2,8]
正向下標
正向元素
0 1 2 3 4
a[0] a[1] a[2] a[3] a[4]
逆向下標
逆向元素
-5 -4 -3 -2 -1
a[-5] a[-4] a[-3] a[-2] a[-1]
 二維串列:串列元素為串列
>>> b = [ [1,2] , [9,4,5] ]
>>> c = b[0][1] # c = 2
>>> d = b[1][0] # d = 9
>>> e = len(b) # e = 2
>>> f = len(b[1]) # f = 3
國立中央大學數學系
下標範圍 (一): 取出多個元素
 如果 a 為一串列
54
 a[i:j] : a[i] , a[i+1] , a[i+2] , … , a[j-1]
 a[i:] : a[i] , a[i+1] , a[i+2] , … , a[-1]
 a[-i:] : a[-i] , a[-i+1] , a[-i+2] , ... a[-1]
 a[:j] : a[0] , a[1] , a[2] , … , a[j-1]
 a[i:j:k] : a[i] , a[i+k] , a[i+2k] , … ,
末尾元素下標小於 j
 a[i:j:-k]: a[i] , a[i-k] , a[i-2k] , ... ,
末尾元素下標大於 j
 a[:] : a[0] , a[1] , a[2] , … , a[-1] 全部元素
 a[::-1] : a[-1] , a[-2] , a[-3] , … , a[0]
逆向取全部元素
國立中央大學數學系
下標範圍 (二)
55
a[2:] [4,7,8] 第三個元素之後
a[-2:] [7,8] 末兩個元素
a[:3] [9,3,4] 前三個元素
a[1:-1:2] [3,7]
a[:] [9,3,4,7,8] 全部元素
a[::-1] [8,7,4,3,9] 逆向取元素
a[::-2] [8,4,9]
a[1:-1] [3,4,7] 中間元素
a[-2:0:-1] [7,4,3] 逆向取中間元素
a[:3][::-1] [4,3,9] 取前三個元素,再逆向
a[-3:][::-1] [8,7,4] 取後三個元素,再逆向
 範例 :
a [9,3,4,7,8] 原串列
國立中央大學數學系
更動元素 (一)
 更改單一元素
56
a = [ 9 , ’中央’ , ’math’ , 2.5 , [ 2 , 8 ] ]
動作 a
a[2] = ’數學’ [9, ’中央’, ’數學’, 2.5, [2, 8]]
a[-1] = [] [9, ’中央’, ’數學’, 2.5, []]
國立中央大學數學系
更動元素 (二)
 更改部份元素
57
>>> a[:2] = [ ’ncu’ ] # 將前兩個元素更改為 ’ncu’
>>> a
[’ncu’, ’math’, 2.5, [2, 8]]
>>> a[-2:] = [] # 去除末兩個元素
>>> a
[’ncu’, ’math’]
僅能更改正向緊鄰的元素
>>> a = [1,2,3,4,5]
>>> a[::2] = [10,20] # 錯誤
>>> a[::-1] = [10,20] # 錯誤
>>> a[::1] = 10 # 錯誤,缺中括號
>>> a[::1] = [10,20] # a 變成兩個元素
>>> a[:] = [10,20] # 同上
國立中央大學數學系
更動元素 (三)
 末端加元素或串列
58
也可使用 append 函式
>>> a = [1,2]
>>> a += [3] # a = [1,2,3]
>>> a = a + [4,5] # a = [1,2,3,4,5]
>>> a[len(a):] = [6] # a = [1,2,3,4,5,6]
>>> a[6:0] = [7] # a = [1,2,3,4,5,6,7]
>>> a = [1,2]
>>> a.append(3) # a = [1,2,3]
>>> a.append([4,5]) # a = [1,2,3,[4,5]]
國立中央大學數學系
for 迴圈取得串列元素 (一)
 單個串列
使用下標
直接使用串列
59
a = [ 5 , 8 , 7 ]
for i in range(len(a)) :
print( a[i] ) # 印出 5 8 7 三列
a = [ 5 , 8 , 7 ]
for x in a : # 迴圈每次由 a 取一個元素設定為 x
print( x ) # 印出 5 8 7 三列
國立中央大學數學系
for 迴圈取得串列元素 (二)
 多個串列(同長度)
使用下標
直接使用串列
60
a , b = [5,8,7] , [2,3,1]
for i in range(len(a)) :
print( a[i] + b[i] ) # 印出 7 11 8 三列
a , b = [5,8,7] , [2,3,1]
for x , y in a , b : # 迴圈每次由 a , b 各取一個元素分別設定為 x , y
print( x + y ) # 印出 7 11 8 三列
國立中央大學數學系
a in A 與 a not in A : a 是否(不)在 A 串列內
 a in A : 檢查 a 是否在 A 串列內,回傳真假值
 a not in A : 檢查 a 是否不在 A 串列內,回傳真假值
 列印不重複數字的三位數,輸出十個數字一列:
61
c = 0
for x in range(1,10):
for y in range(0,10):
if x == y : continue
for z in range(0,10):
if z in [x,y] : continue
c += 1
print( x*100+y*10+z , end=(” ” if c%10 else ”n”) )
102 103 104 105 106 107 108 109 120 123
124 125 126 127 128 129 130 132 134 135
136 137 138 139 140 142 143 145 146 147
...
國立中央大學數學系
串列進階設定 (一): list comprehension
 基本型式
62
>>> [ x for x in range(4) ] # x 為參數,可為其他有效變數名稱
[0, 1, 2, 3]
>>> [ t*t for t in [1,2,3] ]
[1, 4, 9]
>>> [ t//2+1 for t in range(10) ]
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
>>> [ [x,x*x] for x in range(3) ] # 二維串列:串列元素為串列
[[0, 0], [1, 1], [2, 4]]
國立中央大學數學系
串列進階設定 (二)
 有條件式的設定
63
 多重迴圈設定
>>> [ x for x in range(10) if x not in [3,4,5] ]
[0, 1, 2, 6, 7, 8, 9]
>>> [ x for x in range(10) if x not in range(3,6) ]
[0, 1, 2, 6, 7, 8, 9]
>>> [ [x,x*x] for x in range(4) if x%2 ]
[[1, 1], [3, 9]]
>>> [ x+y for x in range(3) for y in range(2) ]
[0, 1, 1, 2, 2, 3]
>>> [ [x,y] for x in range(3) for y in range(10,12) ]
[[0, 10], [0, 11], [1, 10], [1, 11], [2, 10], [2, 11]]
國立中央大學數學系
串列合成與複製
 合成串列 : +
64
 元素複製 : *
 合併使用 + 與 *
a = [1,2,3] + [4,5] # a = [1,2,3,4,5]
a = [0] * 5 # a = [0,0,0,0,0]
b = [1,2] * 3 # b = [1,2,1,2,1,2]
c = [1]*2 + [2]*3 # c = [1,1,2,2,2]
國立中央大學數學系
乘法複製陷阱
 陷阱:以乘法複製串列,元素都佔用同個空間,這種現象
很容易造成二維串列元素處理上的疏忽
65
>>> a = [3,4]
>>> b = [a]*2 # b = [[3, 4],[3, 4]]
>>> a[1] = 8 # 設定 a[1] = 8
>>> b # b 的對應位置也變成 8 !!!
[[3, 8], [3, 8]]
 正確方式:使用 [:] 複製元素,元素各自獨立
>>> a = [1,2]
>>> c = [ a[:] for x in range(2) ]
>>> c[0][0] = 3
>>> c
[[3, 2], [1, 2]]
 若 c = [a[:]]*2 ,設定 c[0][0] = 3 ,則 c = [[3, 2], [3, 2]]
國立中央大學數學系
設定一到三維串列 (一)
 一維串列
66
 None 為 python 常數,代表數值尚未設定
a = [ 1 ] * 3 # a = [1, 1, 1]
b = [ None ] * 3 # b = [None, None, None]
國立中央大學數學系
設定一到三維串列 (二)
67
 二維串列
設定 3x2 二維串列
>>> c = [ [None]*2 for x in range(3) ]
>>> c
[[None, None], [None, None], [None, None]]
設定列元素數量遞增的二維串列
>>> d = [[None]*(i+1) for i in range(3) ]
>>> d
[[None], [None, None], [None, None, None]]
國立中央大學數學系
for 迴圈與一維串列
68
 for 迴圈內變數可直接取用串列元素
s = 0
for x in [1,4,9,16,25] : s += x # 計算串列元素和
s = 0
for x in [ i*i for i in range(1,6) ] : # 同上
s += x
國立中央大學數學系
69
for 迴圈與二維串列
 各別串列元素分別設定到 x 與 y
 各別串列元素設定為 p 串列
for x , y in [ [1,2] , [4,5] ] :
print( x , ’+’ , y , ’=’ , x+y )
輸出 :
1 + 2 = 3
4 + 5 = 9
for p in [ [1,2] , [4,5] ] :
print( p[0] , ’+’ , p[1] , ’=’ , p[0]+p[1] )
輸出同上
國立中央大學數學系
字串分解成字元串列
 使用 list 分解字串
70
>>> list( "abc" )
[’a’, ’b’, ’c’]
>>> list( "123" )
[’1’, ’2’, ’3’]
 分解數字成數字串列
>>> n = 423
>>> a = [ int(x) for x in list(str(n)) ] # a = [4, 2, 3]
# 以上 list 可省略
>>> b = [ int(x) for x in str(n) ] # b = [4, 2, 3]
>>> s = 0
>>> for x in ”423” : s += int(x) # 字串的各數字相加
>>> print(s) # 印出 9
國立中央大學數學系
tuple : 常串列
 tuple 為元素一旦設定後即不可更動的串列
 使用小括號
71
>>> a = (1,2,3) # 三個元素
>>> a[0] = 5 # 錯誤,不可更動
>>> b = (2,)*4 # 四個 2
>>> c = () # 空 tuple
 一個元素的常串列需加逗點
>>> d = (5,) # d 為常串列,僅有一個元素 5
>>> e = (5) # e 為整數 5,不是常串列
國立中央大學數學系
tuple 與 list 型別互換
 使用 tuple 與 list 互換型別
72
>>> a = [1,2,3]
>>> b = tuple(a) # b = (1,2,3)
>>> c = (5,4,3)
>>> d = list(c) # d = [5,4,3]
國立中央大學數學系
星號式子 (一) : 用於串列物件
 在等號左側 : 合併(打包)元素為串列
73
 等號左側僅能有一個星號式子
函式參數設定 運算結果 說明
( a , *b ) = (1,2,3,4) a = 1 , b = [2,3,4] 小括號可省略
*a , b , c = [1,2,3,4] a = [1,2]
b = 3 , c = 4
*a , b = 1 錯誤 右式不是常串列,缺逗號
a , *b = 1 , a = 1 , b = []
*a , b = 1 , a = [] , b = 1
*a = 1 , 2 , 3 錯誤 左式不是常串列,缺逗號
*a , = 1 , 2 , 3 a = [1,2,3]
*a , = () a = []
國立中央大學數學系
星號式子 (二)
 在等號右側 : 拆解串列成元素
74
函式參考設定 運算結果 說明
x = [4,5]
( a , b , c ) = ( 3 , *x )
a = 3
b = 4 , c = 5
小括號可省略
x = [1,2]
a , b = *x ,
a = 1
b = 2
末尾逗號不可省略
x = [1,2]
a , b , c = *x ,
錯誤 等號左側多一個變數
x = [1,2,3] , y = [4]
a , b , c , d = *x , *y
a = 1 , b = 2
c = 3 , d = 4
等號右側可有多個
星號用來拆解串列
國立中央大學數學系
sum 求和函式
>>> sum( [1,3,7] )
11
>>> sum( [1,3,7] + [4,2] )
17
75
 計算串列的數字和
國立中央大學數學系
max , min 求最大值與最小值
 找出串列的極值
76
>>> max( [2,9,7] )
9
>>> min( [4,2,8,9] )
2
國立中央大學數學系
lambda 函式:快速定義一行無名函式
 使用 lambda 定義函式
以上 lambda 函式設定等同
 多參數的 lambda 函式
77
import math
fn = lambda x : int(math.sqrt(x)*10) # 定義 fn lambda 函式
for s in range(1,100) : print( fn(s) )
def fn( x ) :
return int(math.sqrt(x)*10)
>>> f = lambda y , m , d : "{:>}-{:0>2}-{:0>2}".format(y,m,d)
>>> print( f(2018,9,1) )
2018-09-01
>>> g = lambda s , t : ( s , t , s+t )
>>> g(1,2)
(1, 2, 3)
國立中央大學數學系

More Related Content

What's hot (20)

Ppt 138-142
Ppt 138-142Ppt 138-142
Ppt 138-142
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
 
Ppt 78-100
Ppt 78-100Ppt 78-100
Ppt 78-100
 
Ppt 101-119
Ppt 101-119Ppt 101-119
Ppt 101-119
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
 
Ppt 101-119
Ppt 101-119Ppt 101-119
Ppt 101-119
 
Ppt 167-173
Ppt 167-173Ppt 167-173
Ppt 167-173
 
Python p.193 197
Python p.193 197Python p.193 197
Python p.193 197
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 
Appendix A 教學
Appendix A 教學Appendix A 教學
Appendix A 教學
 
Appendix B 教學
Appendix B 教學Appendix B 教學
Appendix B 教學
 
Func diff cal_exercise2-3
Func diff cal_exercise2-3Func diff cal_exercise2-3
Func diff cal_exercise2-3
 
Ch4 教學
Ch4 教學Ch4 教學
Ch4 教學
 
Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
Ch5 教學
Ch5 教學Ch5 教學
Ch5 教學
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
 
Polar example
Polar examplePolar example
Polar example
 
Ch11 教學
Ch11 教學Ch11 教學
Ch11 教學
 
Ppt 136-140
Ppt 136-140Ppt 136-140
Ppt 136-140
 

Similar to Ppt 51-77 (20)

ncuma_串列.pptx
ncuma_串列.pptxncuma_串列.pptx
ncuma_串列.pptx
 
Ch4
Ch4Ch4
Ch4
 
Ch8
Ch8Ch8
Ch8
 
Ch5
Ch5Ch5
Ch5
 
ncuma_型別與迴圈.pptx
ncuma_型別與迴圈.pptxncuma_型別與迴圈.pptx
ncuma_型別與迴圈.pptx
 
ncuma_字串.pptx
ncuma_字串.pptxncuma_字串.pptx
ncuma_字串.pptx
 
Ch2
Ch2Ch2
Ch2
 
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
 
Ch5
Ch5Ch5
Ch5
 
Python learn guide
Python learn guidePython learn guide
Python learn guide
 
Ch1
Ch1Ch1
Ch1
 
Ch 6
Ch 6Ch 6
Ch 6
 
Num py basic(2) - v01
Num py   basic(2) - v01Num py   basic(2) - v01
Num py basic(2) - v01
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptx
 
Ch12
Ch12Ch12
Ch12
 
第5章数组
第5章数组第5章数组
第5章数组
 
Ch12 教學
Ch12 教學Ch12 教學
Ch12 教學
 
Python 入門
Python 入門 Python 入門
Python 入門
 
Ch2 教學
Ch2 教學Ch2 教學
Ch2 教學
 
Ch5 範例
Ch5 範例Ch5 範例
Ch5 範例
 

More from hungchiayang1 (20)

Exercise 1 3
Exercise 1 3Exercise 1 3
Exercise 1 3
 
Python differential equation
Python differential equationPython differential equation
Python differential equation
 
化學系 python 習題
化學系 python 習題化學系 python 習題
化學系 python 習題
 
化學系 python 練習
化學系 python 練習化學系 python 練習
化學系 python 練習
 
化學系 python 教學
化學系 python 教學化學系 python 教學
化學系 python 教學
 
Ppt 151-151
Ppt 151-151Ppt 151-151
Ppt 151-151
 
Ppt 136-136
Ppt 136-136Ppt 136-136
Ppt 136-136
 
Ppt 143-143
Ppt 143-143Ppt 143-143
Ppt 143-143
 
Ppt 137-137
Ppt 137-137Ppt 137-137
Ppt 137-137
 
Ppt 150-150
Ppt 150-150Ppt 150-150
Ppt 150-150
 
Ppt 145-149
Ppt 145-149Ppt 145-149
Ppt 145-149
 
Ppt 174-174
Ppt 174-174Ppt 174-174
Ppt 174-174
 
Ppt 144-144
Ppt 144-144Ppt 144-144
Ppt 144-144
 
Ppt 152-155
Ppt 152-155Ppt 152-155
Ppt 152-155
 
Ppt 156-156
Ppt 156-156Ppt 156-156
Ppt 156-156
 
Ppt 166-166
Ppt 166-166Ppt 166-166
Ppt 166-166
 
Ppt 165-165
Ppt 165-165Ppt 165-165
Ppt 165-165
 
Ppt 157-157
Ppt 157-157Ppt 157-157
Ppt 157-157
 
Ppt 175-175
Ppt 175-175Ppt 175-175
Ppt 175-175
 
Ppt 158-164
Ppt 158-164Ppt 158-164
Ppt 158-164
 

Recently uploaded

永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
yuhpu
 
真的可以找黑客修改塔斯马尼亚大学 University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...
真的可以找黑客修改塔斯马尼亚大学  University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...真的可以找黑客修改塔斯马尼亚大学  University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...
真的可以找黑客修改塔斯马尼亚大学 University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...
微信 tytyqqww业务接单
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
PUAXINYEEMoe
 
真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样
真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样
真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样
yuhpu
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
michaelell902
 

Recently uploaded (12)

永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
 
真的可以找黑客修改塔斯马尼亚大学 University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...
真的可以找黑客修改塔斯马尼亚大学  University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...真的可以找黑客修改塔斯马尼亚大学  University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...
真的可以找黑客修改塔斯马尼亚大学 University of Tasmania改成绩黑客竟然可以找到漏洞来修改大学成绩,这真的让我感到非常惊讶和佩服。【...
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
taibif_開放資料流程-清理資料02-敏感資料處理原則_20240509.pdf
taibif_開放資料流程-清理資料02-敏感資料處理原則_20240509.pdftaibif_開放資料流程-清理資料02-敏感資料處理原則_20240509.pdf
taibif_開放資料流程-清理資料02-敏感資料處理原則_20240509.pdf
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样
真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样
真实可查(utk毕业证)田纳西大学毕业证田纳西大学本科学位文凭学历认证原版一模一样
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 

Ppt 51-77

  • 1. 串 列 簡要 python 學習講義
  • 2. 串列 : list  由排成一列的元素組成 52 a = [ 1 , 2 , 3 , 4 ] # 四個元素 b = [ 8.3 ] # 一個元素 c = [ 2 , ”cat” , 3.4 ] # 串列元素可以不同型別 d = [ [ 1 , 2 ] , 3+2j ] # 串列元素也可以為串列 e = [] # 空串列  串列長度: len() a = len([9,4]) # a 為 2 b = [ [8,5,6] , ”dog” ] c = len(b) # c 為 2  同時設定數個串列 >>> a , b = [5,7] , [”cat”,”ox”] # a = [5,7] , b = ["cat","ox"] # 混合型別設定 >>> c , d , e = [3] , 87 , ”ox” # c = [3] , d = 87 , e = "ox" 國立中央大學數學系
  • 3. 串列下標 : 取出單一元素  串列元素可用下標取得 53 a = [ 9 , ”中央” , ”math” , 2.5 , [2,8] ] a 9 ”中央” ”math” 2.5 [2,8] 正向下標 正向元素 0 1 2 3 4 a[0] a[1] a[2] a[3] a[4] 逆向下標 逆向元素 -5 -4 -3 -2 -1 a[-5] a[-4] a[-3] a[-2] a[-1]  二維串列:串列元素為串列 >>> b = [ [1,2] , [9,4,5] ] >>> c = b[0][1] # c = 2 >>> d = b[1][0] # d = 9 >>> e = len(b) # e = 2 >>> f = len(b[1]) # f = 3 國立中央大學數學系
  • 4. 下標範圍 (一): 取出多個元素  如果 a 為一串列 54  a[i:j] : a[i] , a[i+1] , a[i+2] , … , a[j-1]  a[i:] : a[i] , a[i+1] , a[i+2] , … , a[-1]  a[-i:] : a[-i] , a[-i+1] , a[-i+2] , ... a[-1]  a[:j] : a[0] , a[1] , a[2] , … , a[j-1]  a[i:j:k] : a[i] , a[i+k] , a[i+2k] , … , 末尾元素下標小於 j  a[i:j:-k]: a[i] , a[i-k] , a[i-2k] , ... , 末尾元素下標大於 j  a[:] : a[0] , a[1] , a[2] , … , a[-1] 全部元素  a[::-1] : a[-1] , a[-2] , a[-3] , … , a[0] 逆向取全部元素 國立中央大學數學系
  • 5. 下標範圍 (二) 55 a[2:] [4,7,8] 第三個元素之後 a[-2:] [7,8] 末兩個元素 a[:3] [9,3,4] 前三個元素 a[1:-1:2] [3,7] a[:] [9,3,4,7,8] 全部元素 a[::-1] [8,7,4,3,9] 逆向取元素 a[::-2] [8,4,9] a[1:-1] [3,4,7] 中間元素 a[-2:0:-1] [7,4,3] 逆向取中間元素 a[:3][::-1] [4,3,9] 取前三個元素,再逆向 a[-3:][::-1] [8,7,4] 取後三個元素,再逆向  範例 : a [9,3,4,7,8] 原串列 國立中央大學數學系
  • 6. 更動元素 (一)  更改單一元素 56 a = [ 9 , ’中央’ , ’math’ , 2.5 , [ 2 , 8 ] ] 動作 a a[2] = ’數學’ [9, ’中央’, ’數學’, 2.5, [2, 8]] a[-1] = [] [9, ’中央’, ’數學’, 2.5, []] 國立中央大學數學系
  • 7. 更動元素 (二)  更改部份元素 57 >>> a[:2] = [ ’ncu’ ] # 將前兩個元素更改為 ’ncu’ >>> a [’ncu’, ’math’, 2.5, [2, 8]] >>> a[-2:] = [] # 去除末兩個元素 >>> a [’ncu’, ’math’] 僅能更改正向緊鄰的元素 >>> a = [1,2,3,4,5] >>> a[::2] = [10,20] # 錯誤 >>> a[::-1] = [10,20] # 錯誤 >>> a[::1] = 10 # 錯誤,缺中括號 >>> a[::1] = [10,20] # a 變成兩個元素 >>> a[:] = [10,20] # 同上 國立中央大學數學系
  • 8. 更動元素 (三)  末端加元素或串列 58 也可使用 append 函式 >>> a = [1,2] >>> a += [3] # a = [1,2,3] >>> a = a + [4,5] # a = [1,2,3,4,5] >>> a[len(a):] = [6] # a = [1,2,3,4,5,6] >>> a[6:0] = [7] # a = [1,2,3,4,5,6,7] >>> a = [1,2] >>> a.append(3) # a = [1,2,3] >>> a.append([4,5]) # a = [1,2,3,[4,5]] 國立中央大學數學系
  • 9. for 迴圈取得串列元素 (一)  單個串列 使用下標 直接使用串列 59 a = [ 5 , 8 , 7 ] for i in range(len(a)) : print( a[i] ) # 印出 5 8 7 三列 a = [ 5 , 8 , 7 ] for x in a : # 迴圈每次由 a 取一個元素設定為 x print( x ) # 印出 5 8 7 三列 國立中央大學數學系
  • 10. for 迴圈取得串列元素 (二)  多個串列(同長度) 使用下標 直接使用串列 60 a , b = [5,8,7] , [2,3,1] for i in range(len(a)) : print( a[i] + b[i] ) # 印出 7 11 8 三列 a , b = [5,8,7] , [2,3,1] for x , y in a , b : # 迴圈每次由 a , b 各取一個元素分別設定為 x , y print( x + y ) # 印出 7 11 8 三列 國立中央大學數學系
  • 11. a in A 與 a not in A : a 是否(不)在 A 串列內  a in A : 檢查 a 是否在 A 串列內,回傳真假值  a not in A : 檢查 a 是否不在 A 串列內,回傳真假值  列印不重複數字的三位數,輸出十個數字一列: 61 c = 0 for x in range(1,10): for y in range(0,10): if x == y : continue for z in range(0,10): if z in [x,y] : continue c += 1 print( x*100+y*10+z , end=(” ” if c%10 else ”n”) ) 102 103 104 105 106 107 108 109 120 123 124 125 126 127 128 129 130 132 134 135 136 137 138 139 140 142 143 145 146 147 ... 國立中央大學數學系
  • 12. 串列進階設定 (一): list comprehension  基本型式 62 >>> [ x for x in range(4) ] # x 為參數,可為其他有效變數名稱 [0, 1, 2, 3] >>> [ t*t for t in [1,2,3] ] [1, 4, 9] >>> [ t//2+1 for t in range(10) ] [1, 1, 2, 2, 3, 3, 4, 4, 5, 5] >>> [ [x,x*x] for x in range(3) ] # 二維串列:串列元素為串列 [[0, 0], [1, 1], [2, 4]] 國立中央大學數學系
  • 13. 串列進階設定 (二)  有條件式的設定 63  多重迴圈設定 >>> [ x for x in range(10) if x not in [3,4,5] ] [0, 1, 2, 6, 7, 8, 9] >>> [ x for x in range(10) if x not in range(3,6) ] [0, 1, 2, 6, 7, 8, 9] >>> [ [x,x*x] for x in range(4) if x%2 ] [[1, 1], [3, 9]] >>> [ x+y for x in range(3) for y in range(2) ] [0, 1, 1, 2, 2, 3] >>> [ [x,y] for x in range(3) for y in range(10,12) ] [[0, 10], [0, 11], [1, 10], [1, 11], [2, 10], [2, 11]] 國立中央大學數學系
  • 14. 串列合成與複製  合成串列 : + 64  元素複製 : *  合併使用 + 與 * a = [1,2,3] + [4,5] # a = [1,2,3,4,5] a = [0] * 5 # a = [0,0,0,0,0] b = [1,2] * 3 # b = [1,2,1,2,1,2] c = [1]*2 + [2]*3 # c = [1,1,2,2,2] 國立中央大學數學系
  • 15. 乘法複製陷阱  陷阱:以乘法複製串列,元素都佔用同個空間,這種現象 很容易造成二維串列元素處理上的疏忽 65 >>> a = [3,4] >>> b = [a]*2 # b = [[3, 4],[3, 4]] >>> a[1] = 8 # 設定 a[1] = 8 >>> b # b 的對應位置也變成 8 !!! [[3, 8], [3, 8]]  正確方式:使用 [:] 複製元素,元素各自獨立 >>> a = [1,2] >>> c = [ a[:] for x in range(2) ] >>> c[0][0] = 3 >>> c [[3, 2], [1, 2]]  若 c = [a[:]]*2 ,設定 c[0][0] = 3 ,則 c = [[3, 2], [3, 2]] 國立中央大學數學系
  • 16. 設定一到三維串列 (一)  一維串列 66  None 為 python 常數,代表數值尚未設定 a = [ 1 ] * 3 # a = [1, 1, 1] b = [ None ] * 3 # b = [None, None, None] 國立中央大學數學系
  • 17. 設定一到三維串列 (二) 67  二維串列 設定 3x2 二維串列 >>> c = [ [None]*2 for x in range(3) ] >>> c [[None, None], [None, None], [None, None]] 設定列元素數量遞增的二維串列 >>> d = [[None]*(i+1) for i in range(3) ] >>> d [[None], [None, None], [None, None, None]] 國立中央大學數學系
  • 18. for 迴圈與一維串列 68  for 迴圈內變數可直接取用串列元素 s = 0 for x in [1,4,9,16,25] : s += x # 計算串列元素和 s = 0 for x in [ i*i for i in range(1,6) ] : # 同上 s += x 國立中央大學數學系
  • 19. 69 for 迴圈與二維串列  各別串列元素分別設定到 x 與 y  各別串列元素設定為 p 串列 for x , y in [ [1,2] , [4,5] ] : print( x , ’+’ , y , ’=’ , x+y ) 輸出 : 1 + 2 = 3 4 + 5 = 9 for p in [ [1,2] , [4,5] ] : print( p[0] , ’+’ , p[1] , ’=’ , p[0]+p[1] ) 輸出同上 國立中央大學數學系
  • 20. 字串分解成字元串列  使用 list 分解字串 70 >>> list( "abc" ) [’a’, ’b’, ’c’] >>> list( "123" ) [’1’, ’2’, ’3’]  分解數字成數字串列 >>> n = 423 >>> a = [ int(x) for x in list(str(n)) ] # a = [4, 2, 3] # 以上 list 可省略 >>> b = [ int(x) for x in str(n) ] # b = [4, 2, 3] >>> s = 0 >>> for x in ”423” : s += int(x) # 字串的各數字相加 >>> print(s) # 印出 9 國立中央大學數學系
  • 21. tuple : 常串列  tuple 為元素一旦設定後即不可更動的串列  使用小括號 71 >>> a = (1,2,3) # 三個元素 >>> a[0] = 5 # 錯誤,不可更動 >>> b = (2,)*4 # 四個 2 >>> c = () # 空 tuple  一個元素的常串列需加逗點 >>> d = (5,) # d 為常串列,僅有一個元素 5 >>> e = (5) # e 為整數 5,不是常串列 國立中央大學數學系
  • 22. tuple 與 list 型別互換  使用 tuple 與 list 互換型別 72 >>> a = [1,2,3] >>> b = tuple(a) # b = (1,2,3) >>> c = (5,4,3) >>> d = list(c) # d = [5,4,3] 國立中央大學數學系
  • 23. 星號式子 (一) : 用於串列物件  在等號左側 : 合併(打包)元素為串列 73  等號左側僅能有一個星號式子 函式參數設定 運算結果 說明 ( a , *b ) = (1,2,3,4) a = 1 , b = [2,3,4] 小括號可省略 *a , b , c = [1,2,3,4] a = [1,2] b = 3 , c = 4 *a , b = 1 錯誤 右式不是常串列,缺逗號 a , *b = 1 , a = 1 , b = [] *a , b = 1 , a = [] , b = 1 *a = 1 , 2 , 3 錯誤 左式不是常串列,缺逗號 *a , = 1 , 2 , 3 a = [1,2,3] *a , = () a = [] 國立中央大學數學系
  • 24. 星號式子 (二)  在等號右側 : 拆解串列成元素 74 函式參考設定 運算結果 說明 x = [4,5] ( a , b , c ) = ( 3 , *x ) a = 3 b = 4 , c = 5 小括號可省略 x = [1,2] a , b = *x , a = 1 b = 2 末尾逗號不可省略 x = [1,2] a , b , c = *x , 錯誤 等號左側多一個變數 x = [1,2,3] , y = [4] a , b , c , d = *x , *y a = 1 , b = 2 c = 3 , d = 4 等號右側可有多個 星號用來拆解串列 國立中央大學數學系
  • 25. sum 求和函式 >>> sum( [1,3,7] ) 11 >>> sum( [1,3,7] + [4,2] ) 17 75  計算串列的數字和 國立中央大學數學系
  • 26. max , min 求最大值與最小值  找出串列的極值 76 >>> max( [2,9,7] ) 9 >>> min( [4,2,8,9] ) 2 國立中央大學數學系
  • 27. lambda 函式:快速定義一行無名函式  使用 lambda 定義函式 以上 lambda 函式設定等同  多參數的 lambda 函式 77 import math fn = lambda x : int(math.sqrt(x)*10) # 定義 fn lambda 函式 for s in range(1,100) : print( fn(s) ) def fn( x ) : return int(math.sqrt(x)*10) >>> f = lambda y , m , d : "{:>}-{:0>2}-{:0>2}".format(y,m,d) >>> print( f(2018,9,1) ) 2018-09-01 >>> g = lambda s , t : ( s , t , s+t ) >>> g(1,2) (1, 2, 3) 國立中央大學數學系