iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
Modern Web

30Day啟動!!系列 第 5

Day05-Python列表推導式

  • 分享至 

  • xImage
  •  

Python列表推導式:簡潔、高效的字典建立技巧

列表推導式(List Comprehensions)是Python中一種強大且精簡的工具,用於建立新的列表(或其他可迭代物件),而不必使用傳統的for迴圈語句。 它可以幫助你更簡潔地產生新列表,提高程式碼可讀性和可維護性。 本日內容將會簡單介紹且教你如何使用。

基本文法
Python的列表推導式有以下基本語法結構:

new_list = [expression for item in iterable if condition]

new_list:新產生的列表。
expression:用於計算新清單中每個元素的表達式。
item:迭代中的目前元素。
iterable:要迭代的原始可迭代對象,如列表、元組、字串等。
condition(可選):一個條件,用於過濾迭代中的元素。 只有符合條件的元素才會包含在新清單中。

簡單範例
讓我們透過一些範例來更好地理解列表推導式的工作原理。

  1. 產生平方數列表
    squares = [x**2 for x in range(1, 6)]

輸出: [1, 4, 9, 16, 25]

  1. 過濾偶數
    even_numbers = [x for x in range(1, 11) if x % 2 == 0]

輸出: [2, 4, 6, 8, 10]

  1. 字串處理
    words = ['hello', 'world', 'python']
    capitalized_words = [word.upper() for word in words]

輸出: ['HELLO', 'WORLD', 'PYTHON']

嵌套列表推導式
列表推導式也可以嵌套使用,讓你可以建立更複雜的資料結構,例如二維列表。

  1. 產生二維列表
    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    flattened_matrix = [num for row in matrix for num in row]

输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

  1. 條件過濾
    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    even_numbers = [num for row in matrix for num in row if num % 2 == 0]

输出: [2, 4, 6, 8]

列表推導式的優點
簡潔:相比傳統的for循環,列表推導式通常更簡潔,減少了冗餘程式碼。
可讀性:清晰的語法使程式碼更易讀和理解。
效能:在某些情況下,列表推導式比傳統循環更快,因為它們在內部優化了迭代過程。

注意事項
雖然清單推導式非常強大,但也有一些需要注意的事項:

不要濫用:過度使用列表推導式可能會降低程式碼的可讀性。 在複雜情況下,使用傳統的for迴圈可能會更明智。
避免深度嵌套:深度嵌套的列表推導式可能變得難以理解,應謹慎使用。
謹慎處理大型資料:對於大型資料集,列表推導式可能會導致記憶體問題,應考慮使用生成器表達式。
總之,列表推導式是Python中的強大工具,可以幫助你更輕鬆地建立新的列表,提高程式碼的可讀性和可維護性。 掌握它的基本語法和使用場景可以讓你的Python程式更有效率。

參考資料:


上一篇
Day04-Python字典推導式
下一篇
Day 06-條件表達式
系列文
30Day啟動!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言