iT邦幫忙

2024 iThome 鐵人賽

DAY 7
1
自我挑戰組

每日挑戰:從零開始的 Python 學習之旅系列 第 7

【Day 7】基礎語法 - 串列和元組篇

  • 分享至 

  • xImage
  •  

Hi 大家好,

今天要開始介紹基礎語法中的串列(list)元組(tuple)篇,那我們開始吧!

串列(list)

 1. 什麼是串列與陣列有什麼不同?

  在程式語言中,陣列名詞是很常見的一種儲存資料結構。但為什麼在Python的世界中會把這樣的資料結構給他一個串列的名詞來稱呼它呢?

主要是因為串列有以下幾個特點:
 - 是有順序性的
 - 可以變動串列內容或串列大小,例如新增修改..等
 - 利用[]方括號來建立串列,利用號來分隔元素
 - 可以放不同型別的資料 (字串、數字、空值、布林值或是再放一層串列)

>>> name = ["Eric", "Jacky", "Bluse"]
>>> name
['Eric', 'Jacky', 'Bluse']
>>> data = ["number", 123, None, True, [9, 8, 7]]
>>> data
['number', 123, None, True, [9, 8, 7]]
>>>    

1. 串列操作

  取得元素

>>> numbers = [88, 983, 34]
>>> numbers[0]
88
>>> numbers[-1]
34
>>>

  修改元素

>>> numbers[1] = 7777
>>> numbers
[88, 7777, 34]
>>>

  新增元素

>>> numbers.append(123)
>>> numbers
[88, 7777, 34, 123]
>>>

  刪除元素

>>> numbers.remove(34)
>>> numbers
[88, 7777, 123]
>>>

2. 串列切片 (使用切片抓取串列中的子串列)

  抓取從串列索引3開始到串列最後的所有子串列

>>> numbers.append(1)
>>> numbers.append(2)
>>> numbers.append(3)
>>> numbers.append(4)
>>> numbers
[88, 7777, 123, 1, 2, 3, 4]
>>> numbers[3:]
[1, 2, 3, 4]
>>>

  抓取從索引0開始到索引值-4之前的所有子串列

>>> numbers
[88, 7777, 123, 1, 2, 3, 4]
>>> numbers[:-4]
[88, 7777, 123]
>>>

3. 串列推導式(List Comprehension)

 - 主要是用來做資料轉換
 - 可以使用更簡潔的方法建立串列
 - 使用一個序列或 iterable(可疊代物件),將每一個元素經過某個運算的結果串接起來
  成為新的 list,或是創建一個子序列

[ expression for item in iterable if condition ]

[ 結果 for 個體 in 集合 if 條件 ]

[情境一]

numbers = [1, 2, 3, 4, 5]
# [2, 4, 6, 8, 10]

# [ 結果 for 個體 in 集合 ] 
result = [ n * 2 for n in numbers ]
print(result)

[情境二]

  • 情境說明 : 2 * n -1 => 是一求得奇數的公式
numbers = [1, 2, 3, 4, 5]
# 1, 3, 5, 7, 9

# [ 結果 for 個體 in 集合 ]
result = [2 * n - 1 for n in numbers]
print(result)

4. 串列開箱(unpacking)(多重指定,解構方式)

>>> names = ["Python", "JavaScript", "HTML"]
>>> one, two, three = names
>>> one
'Python'
>>> two
'JavaScript'
>>> three
'HTML'
>>>

元組(tuple)

串列有以下幾個特點:
 - 是有順序性的
 - 內容是不可變動
 - 利用()方括號來建立串列,利用號來分隔元素
 - 可以放不同型別的資料 (字串、數字、空值、布林值或是再放一層元組)

tuple操作

>>> empty_tuple = ()
>>> empty_tuple
()
>>> numbers_tuple = (1, 2, 3, 4)
>>> numbers_tuple
(1, 2, 3, 4)
>>> mix_tuple = ("python", 123, True, (7, 8, 9))
>>> mix_tuple
('python', 123, True, (7, 8, 9))
>>>

單一個數字在tuple中的表現方式

  如果tuple內的數字只有一個,那在數字後面必須要加上一個,逗號,才會是一個tuple型態
否則會變成一個整數,這邊在使用上要特別留意

>>> number = (1)
>>> number
1
>>> type(number)
<class 'int'>
>>> number = (1,) <==== 數字後面加上,逗號 很重要 很重要 很重要
>>> number
(1,)
>>> type(number)
<class 'tuple'>
>>>

tuple抓取元素方式

>>> numbers_tuple = (1, 2, 3, 4)
>>> numbers_tuple[1]
2
>>> numbers_tuple[-1]
4
>>>

tuple內容是無法更改的

*** 要習慣從錯誤訊息中找原因 ***

>>> numbers_tuple = (1, 2, 3, 4)
>>> numbers_tuple[1]
2
>>> numbers_tuple[1] = 999
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>

tuple切片

>>> numbers_tuple = (1, 2, 3, 4)
>>> numbers_tuple[:3]
(1, 2, 3)
>>> numbers_tuple[:-1]
(1, 2, 3)
>>> numbers_tuple[:-3]
(1,)
>>>

tuple方法

- count(元素)方法 : 是從tuple中尋找相同元素重複出現幾次
>>> numbers_tuple = (1, 2, 3, 4, 2, 2)
>>> numbers_tuple.count(2)
3
>>>
- index(元素)方法 : 是從tuple中尋找指定元素的索引值
>>> numbers_tuple = (1, 2, 3, 4, 2, 2)
>>> numbers_tuple.index(4)
3
>>> numbers_tuple.index(1)
0
>>>

那今天就介紹到這裡,我們明天見~


上一篇
【Day 6】基礎語法 - 字串篇
下一篇
【Day 8】基礎語法 - 迴圈篇
系列文
每日挑戰:從零開始的 Python 學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言