文章

Python-(補充)大括號、中括號、小括號傻傻分不清楚

零、前言

對一般 Python 初學者,很容易分不清楚小括號、中括號、大括號的使用時機,不知道甚麼時候要使用哪個,這篇文章就用簡單的分類來幫助讀者了解,每個括號的用途吧!

一、各種括號使用原則

這邊先簡單條列出原則,下面會再透過例子細講,讀者可以參考對照。

  • ()小括號
    • 表示 Function 時使用
    • 用來表示資料結構中的「tuple」
  • []中括號
    • 用來表示資料結構中的「list」
    • 用來表示位址(index)
  • {}大括號
    • 用來表示資料結構中的「dict」、「set」

二、小括號

  1. 表示 Function 時使用,因此看到 「my_function()」這樣的形式,幾乎可以認定這是一個功能,會執行某些行為。

    1
    2
    3
    4
    5
    6
    7
    8
    
     # 建立一個加法的 Function,回傳 num_a + num_b 的結果
     def add(num_a, num_b):
         result = num_a + num_b
         return result
        
     a = 1
     b = 3
     c = add(a, b) # 表示 Function 都是使用小括號
    
    1
    2
    3
    4
    
     # 我們很常使用一些 Python 內建功能,其實也是一樣意思
     stock_list = ['2330', '0050', '2331', '3036']
     num_of_stock = len(stock_list) # len() 就是 Python 內建功能,用來確認 List 的長度
     print(num_of_stock) # 這邊輸出結果就會是 4,有四檔股票,print()本身也是一種內建功能
    
  2. 表示 元組(tuple)這種資料結構時,我們也會使用小括號框住資料,類似 串列(list),不過他們有些許差異,這邊先不展開講。

    1
    2
    3
    4
    5
    6
    7
    8
    
     # 在 Python 中有一種類似 List 的資料結構,叫做 tuple,也是使用小括號表示
     stock_tuple = ('2330', '0050', '2331', '3036')
     stock_list = ['2330', '0050', '2331', '3036'] # 兩者很像,但功能上有些許不同
        
     print(stock_tuple[0]) # 輸出 stock_tuple 的第 0 個位址的值 => 2330
     print(stock_tuple[1]) # 輸出 stock_tuple 的第 1 個位址的值 => 0050
     print(stock_tuple[2]) # 輸出 stock_tuple 的第 2 個位址的值 => 2331
     print(stock_tuple[3]) # 輸出 stock_tuple 的第 3 個位址的值 => 3036
    

三、中括號

  1. 用來表示 串列(list)這種資料結構,我們會使用中括號框住資料。

    1
    2
    3
    4
    5
    6
    7
    
     # 建立我的產業觀察名單
     industry = ["水泥", "鋼鐵製造", "半導體", "食品"]
     # 建立我的個股觀察清單
     stock_list_1 = ["1101-台泥", "1102-亞泥"]
     stock_list_2 = ["2002-中鋼", "2006-東和鋼鐵"]
     stock_list_3 = ["2330-台積電", "2303-聯電"]
     stock_list_4 = ["1201-味全", "1203-味王"]
    
  2. 我們在表示「位址」的概念時,也會使用到中括號,讓電腦知道我們需要找資料,注意,Python 中,在表示位置,都是從 0 開始算,即 0, 1, 2, 3, 4, 5…。

    1. 如果要抓取”水泥”這筆資料,則透過 industry[0] 這樣的方式來抓出第0位址資料
    2. 抓取”食品”,則透過 industry[3] 來抓出第3位址資料(即第四筆)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 延續上面程式碼,這邊建立一個 input,讓使用者輸入欲搜尋產業
search_industry = input("輸入要查詢的產業:")

# 這邊會判斷輸入的產業是否有在 industry 清單中,若有則輸出對應的股票清單
if search_industry == industry[0]: # 水泥 (第 0 個位址)
    print(stock_list_1)
elif search_industry == industry[1]: # 鋼鐵製造 (第 1 個位址)
    print(stock_list_2)
elif search_industry == industry[2]: # 半導體 (第 2 個位址)
    print(stock_list_3)
elif search_industry == industry[3]: # 食品 (第 3 個位址)
    print(stock_list_4)
else:
    print("查詢不到相關股票清單")

Untitled

輸出結果 輸出結果

四、大括號

  1. 表示 字典(dict)這種資料結構,我們會使用大括號框住資料。

    1
    2
    3
    4
    5
    6
    7
    8
    
     # 建立一個字典,存放今天的個股收盤價
     # 前面股票代號為 Key;後面收盤價為 Value,整個字典用「大括號」包住
     today_stock_price = { "2330": 1000, 
                           "1101": 34.15, 
                           "1201": 18.15}
        
     # 查詢 2330 股價,只要對 dict 輸入key,便會回傳對應 value,跟查字典一樣
     print(today_stock_price["2330"]) # 輸出:1000 股價
    
  2. 表示 集合(set)這種資料結構,我們會使用大括號框住資料。 集合 (Set) 其實和數組 (Tuple) 與串列 (List) 很類似, 不同的點在於集合不會包含重複的資料。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     # 建立兩個人的個性集合,看看他們擁有那些個性,用大括號包起來
     # 表達一個人的個性,不可能會有重複的項目
     Howard_character = {"好奇心", "勇敢", "外向", "容易焦慮", "文靜"}
     Eva_character = {"慵懶", "外向", "好奇心", "理性", "好動", "膽小"}
        
     # Howard Eva 兩人的全部個性種類 聯集 的寫法
     print("Howard Eva 兩人的全部個性種類:")
     print(Howard_character.union(Eva_character))
     print(Howard_character | Eva_character) # 「|」是聯集表示符號
        
     # Howard Eva 兩人個性共通點 交集 的寫法
     print("Howard Eva 兩人個性共通點:")
     print(Howard_character.intersection(Eva_character))
     print(Howard_character & Eva_character) # 「&」是交集表示符號
    

    輸出結果 輸出結果

  3. List 與 Tuple 都屬於「有順序」的資料結構,即代表存進去的順序是固定的;相對地,Dict 與 Set 就是屬於「沒有順序」的資料結構類型,就是說這兩種資料結構並不會記錄我們存資料的順序,像是 Dict 本身是透過「Key」來定位資料,而非透過位址(index)。

    可以觀察到 List 的資料具有順序性,後面加入的資料,會往後延伸

    可以觀察到 List 的資料具有順序性,後面加入的資料,會往後延伸

    可以觀察到 Set 的資料無順序性,不會因加入資料順序而決定排序

    可以觀察到 Set 的資料無順序性,不會因加入資料順序而決定排序

本文章以 CC BY 4.0 授權