Python 資料型態 - MIS 腳印
MIS 腳印 logo

MIS 腳印

記錄 IT 學習的軌跡

Python 資料型態

在 Python 3 有 Number、String、List、Tuple、Set 與 Dictionary 六種資料型態,而 Number 又有 Int、Float 與 Complex 三種,而最特別就是對 String 的處理能力,除了可直接用 Index 的方式選取字元,還可對 String Slice 切出指定範圍的字串。

Python

查詢資料型態

可以使用 type() 內建函式來查詢資料型態:

print(type(100))
'''
<class 'int'>
'''

print(type('name'))
'''
<class 'str'>
'''

Number (數值)

Python 3 有三種 Number 型態:

  • int:整數。
  • float:浮點數 (小數)。
  • complex:複數。
print(type(5))
'''
<class 'int'>
'''

print(type(1.25))
'''
<class 'float'>
'''

print(type(3.14j))
'''
<class 'complex'>
'''

String (字串)

String 使用成對 ' 單引號或 " 雙引號來表示。

如果字串內容必須跨越數行,可使用連續三個 ' 單引號或 " 雙引號:

print('one')

print('two')

print('''one
two
three''')

print("""one
two
three""")

串接、重複字串

  • 串接字串:使用 + 加號。
  • 重複字串:使用 * 星號。
str = 'ABCDEF'

print(str + '-' + str)
'''
ABCDEF-ABCDEF
'''

print(str * 3)
'''
ABCDEFABCDEFABCDEF
'''

取得字串長度

可以使用 len() 內建函式來取得字串的長度:

print(len('ABCDEF'))
'''
6
'''

取值、切片

Python 的 String 是由字元序列所組成,它可以使用 [] 索引的方式來取值與切片。

取值方式
語法:[index]
說明:取得指定的 index 字元。
切片 (Slice) 的兩種方式
語法:[start_index:end_index]
說明:取得 start_index 至 end_index 範圍內的字串
語法:[start_index:end_index:step]
說明:取得 start_index 至 end_index 範圍內,再以每 step 個間隔字元的方式,來取得字串。
Python 取值、切片參數表
參數 啟始值 預設值 備註
由前至後 由後至前
index 0 -1    
start_index 0 -1    
end_index 0 -1    
start 1 -1 1 不可為 0
Python 取值、切片對照表
取值 前至後: 0 1 2 3 4 5
後至前: -6 -5 -4 -3 -2 -1
A B C D E F
切片 前至後: 0 1 2 3 4 5
後至前: -6 -5 -4 -3 -2 -1

範例程式:

str = 'ABCDEF'

print('''# 對照表
前至後取值:   0   1   2   3   4   5
後至前取值:  -6  -5  -4  -3  -2  -1
             +---+---+---+---+---+---+
             | A | B | C | D | E | F |
             +---+---+---+---+---+---+
前至後切片: 0   1   2   3   4   5
後至前切片:-6  -5  -4  -3  -2  -1''')

print('\n\n# [index] 取值')
print('str[2]   ' + str[0])
print('str[-1]  ' + str[-1])        # 取得最後一個值

print('\n\n# [start_index:end_index] 切片')
print('str[2:5]     ' + str[2:5])
print('str[-2:]     ' + str[-2:])
print('str[-2:-5]   ' + str[-5:-2])

print('\n\n# [start_index:end_index:step] 切片')
print('str[::2]     ' + str[::2])   # 從前面開始,取得每 2 個間隔字元的字串
print('str[::-2]    ' + str[::-2])  # 從後面開始,取得每 2 個間隔字元的字串
print('str[::-1]    ' + str[::-1])  # 從後面開始,取得每 1 個間隔字元的字串 (就是將字串反轉)

'''
# 對照表
前至後取值:   0   1   2   3   4   5
後至前取值:  -6  -5  -4  -3  -2  -1
             +---+---+---+---+---+---+
             | A | B | C | D | E | F |
             +---+---+---+---+---+---+
前至後切片: 0   1   2   3   4   5
後至前切片:-6  -5  -4  -3  -2  -1


# [index] 取值
str[2]   A
str[-1]  F


# [start_index:end_index] 切片
str[2:5]     CDE
str[-2:]     EF
str[-2:-5]   BCD


# [start_index:end_index:step] 切片
str[::2]     ACE
str[::-2]    FDB
str[::-1]    FEDCBA
'''

List (串列)

使用 [] 建立 List (就像其它程式語言的 Array),它是有序的元素集合:

  • 具有索引。
  • 長度可變動。
Python List 常用函式
函式 返回值 參數 說明
list(s) 元素數量 List 型態 返回元素數量
max(iterable) 元素最大值 List 型態 返回元素的最大值
min(iterable) 元素最小值 List 型態 返回元素的最小值
Python List 常用方法
方法 返回 參數 說明 備註
list.append(x)   元素 在未尾增加一個元素 更動 List
list.extend(L)   List 型態 在未尾增加一個 List 型態  
list.insert(i, x)   i 欲插入的 index 位置 x 插入的元素 插入元素至指定位置  
list.pop(i = -1) 移除的元素 index 移除元素  
list.remove(x)   元素值 移除元素 更動 List

範例程式:

# 建立一個空 List
list = []

# 查看資料型態
print(type(list))
'''
<class 'list'>
'''

# 無法這樣新增元素,但如果該 index 已設值,可這樣更改值
# list[0] = 1
'''
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
'''

# 在未尾增加一個元素
list.append('one')
print(list)
'''
['one']
'''

# 更改第 1 (啟始值0) 個元素的值
list[0] = 1
print(list)
'''
[1]
'''

# List 可存放各種元素
list = [1, 'one', True]
print(list)
'''
[1, 'one', True]
'''

# 查看 List 有多少元素
print(len(list))
'''
3
'''

# 也可以使用字串取值與切片的方式
listStr = ['A', 'B', 'C', 'D', 'E', 'F']
listNum = [1, 2, 3, 4, 5, 6]
print(listStr[0])
print(listStr[1:3])
'''
A
['B', 'C']
'''

# 使用 * 符號重複操作
print(listStr[0] * 5)
'''
AAAAA
'''

# 使用 + 符號串接兩個 List
print(listStr + listNum)
'''
['A', 'B', 'C', 'D', 'E', 'F', 1, 2, 3, 4, 5, 6]
'''

# 使用 del 來刪除元素或 List
del listStr[0]
print(listStr)
del listStr
'''
['B', 'C', 'D', 'E', 'F']
'''

Tuple (元組)

Tuple 與 List 類似,使用方法可直接參考 List,除下述不同:

  • 使用 () 括號建立 Tuple。
  • Tuple 無法重新設值,也就是只能讀 (Rrad only)。

Set (集合)

使用 {} 建立 Set,與 List 不同,它是無序、不重複元素的集合,所以沒有索引。

Python Set 運算表
運算符 set1 set2 運算結果 說明
| 聯集 'A', B', 'C' 1, 2, 'A' 'A', 'B', 'C', 1, 2 合併 set1 與 set2 不重複的值
& 交集 'A' set1 與 set2 相同的值
- 差集 'B', 'C' 在 set1 但不存在 set2 的值
^ XOR 'B', 'C', 1, 2 排除相同的值

範例程式:

set1 = {'A', 'B', 'C'}
set2 = {1, 2, 'A'}

# 測試元素是否在 Set 中
print('A' in set1)
'''
True
'''

# 聯集
print(set1 | set2)
'''
{1, 2, 'B', 'A', 'C'}
'''

# 交集
print(set1 & set2)
'''
{'A'}
'''

# 差集
print(set1 - set2)
'''
{'C', 'B'}
'''

# XOR
print(set1 ^ set2)
'''
{1, 2, 'C', 'B'}
'''

Dictionary (字典)

使用 {} 建立 Dictionary (與 Set 一樣),它是 Key (鍵) / Value (值) 對應的集合,也就是關聯式陣列:

dict = {'name': 'Jacky', 'sex': 'F', 'height': 172, 'weight': 52}

print(dict)
print(dict['name'])
'''
{'weight': 52, 'sex': 'F', 'name': 'Jacky', 'height': 172}
Jacky
'''

參考

發表迴響