語法結構與基本資料型態(I)
回目錄以下是 Python 核心的 data type (資料型別),中文翻譯參考就好,不用特別去記。
Numbers (數字)
int
>>> type(1)
<class 'int'>
float
>>> type(1.0)
<class 'float'>
complex
>>> type(1j)
<class 'complex'>
>>> type((1+0j))
<class 'complex'>
Strings (字串)
Single quote (單引號)
'This is a string'
>>> 'It's great'
SyntaxError: EOL while scanning string literal
Double quote (雙引號)
"This is a string"
>>> "My name is "阿吉""
SyntaxError: invalid syntax
Triple quote (三引號)
可為連續三個單引號或雙引號
'''This is a string'''
"""This is a string"""
要特別注意:在所有三引號內的空白或空行都會被視作字符
>>> '''
... This is the second line
...
... This is the fourth line
... '''
'\nThis is the second line\n\nThis is the fourth line\n'
分行
過長的字串要怎麼分行呢?其中一種方法是利用 \
(line break / line continuatoin):
text = '台灣大學語言學研究所今年開了一門「\
人文學群的Python程式入門,宗旨是希望用深入\
簡單的方式讓沒有程式背景的人快速了解Python\
程式語言的易學跟好用。'
但我個人更喜歡這種表達方式:
text = (
'台灣大學語言學研究所今年開了一門「'
'人文學群的Python程式入門,宗旨是希望用深入'
'簡單的方式讓沒有程式背景的人快速了解Python'
'程式語言的易學跟好用。'
)
注意以上分行是沒有 ,
的喔,不然就會變成 tuple
了!
Lists (串列)
Python 中的 list
是非常有彈性的,長度不用固定且可以隨時增加、修改或刪除其中的元素。
Mutable (可變性)
>>> a = ['a', 'b', 'c', 'd', 'e''']
>>> a[2]
'b'
>>> a[2] = 'x'
>>> a[2]
'x'
>>> a
['a', 'x', 'c', 'd', 'e''']
Heterogeneous (異質性)
每一個元素都可以為不同的 type
a = [100, 'Aji', None, [1, 2, 3]]
如果今天有需要強制某個 list
所有元素的 type
皆為相同的話,可以利用內建函示 array
假設我們要確保某個 array
的元素都是 int
,可以利用下列方式:
from array import array
a = array('i') # 'i' 代表 Integer
如此一來便能確保非 int
的資料不會被意外加入
>>> a.append(1)
>>> a
array('i', [1])
>>> a.append('a')
TypeError: an integer is required
Tuples (元組)
>>> a = ('a', 'b')
>>> type(a)
<class 'tuple'>
>>> a = ('a')
>>> type(a)
<class 'str'>
>>> a = ('a', )
>>> type(a)
<class 'tuple'>
Dictionaries (字典)
dict
為 鍵-值 (key-value)一組的資料型態,只要是可以被hash的物件都可以做為 dict
的 key,例:
profile = {
'institute': 'Graduate Institute of Linguistics',
'classrooms': [304, 305],
'faculties': {
{
'name': 'shukai',
'gender': 'male',
},
{
'name': 'limay',
'gender': 'female',
}
}
}
像是 list
或 set
此類不可被 hash 的物件就不可以當作 key
>>> d = {['a', 'b']: 'foo'}
TypeError: unhashable type: 'list'
Sets (集合)
set
set
的表示方式為 {}
,跟 dict
有點像,不過 dict
一定是 key-value 為一組,注意不要眼花了。
這是 set
>>> a = {'a', 'b', 'c'}
>>> type(a)
<class 'set'>
這是 dict
>>> a = {'a': 0, 'b': 1, 'c': 2}
>>> type(a)
<class 'dict'>
frozenset
基本上跟 set
是一樣的東西,其不同之處為 frozenset
是可變 (mutable) 以及 可被 hash (雜湊) 的。
Hashable
>>> hash(set(('a', 'b', 'c')))
TypeError: unhashable type: 'set'
>>> hash(set(('a', 'b', 'c')))
-7811812079328027595
Immutable
set
具有 add
, clear
, pop
等 method,讓其中元素可作調整,而 frozenset
因爲不可變,所以也不具有這類方法。 詳情請見
下一章節。
Booleans (布林)
True
或 False
>>> type(True)
bool
>>> type(False)
bool
None
None
就是空值,它的 type
為 NoneType
>>> type(None)
NoneType
標籤: python