<<<<<<< HEAD

Python Programming for Humanities

=======

Python Programming for Humanities

>>>>>>> 550142fcb10f3d32bf0ae9864da27f2236ba320a

人文學群的 Python 程式入門

2 October 2018

語法結構與基本資料型態(I)

回目錄
  1. Numbers (數字)
    1. int
    2. float
    3. complex
  2. Strings (字串)
    1. Single quote (單引號)
    2. Double quote (雙引號)
    3. Triple quote (三引號)
    4. 分行
  3. Lists (串列)
    1. Mutable (可變性)
    2. Heterogeneous (異質性)
  4. Tuples (元組)
  5. Dictionaries (字典)
  6. Sets (集合)
    1. set
    2. frozenset
  7. Booleans (布林)
  8. None



以下是 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',
        }
    }
}

像是 listset 此類不可被 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 (布林)

TrueFalse

>>> type(True)
bool
>>> type(False)
bool

None

None 就是空值,它的 typeNoneType

>>> type(None)
NoneType

標籤: python