7.1 乘法
在 Python 裡面有個方便的語法,可以用來增加元素的數量。為此,可以用簡單的乘法運算符。
字串生成
可以將其應用於字串:
print("媽媽" * 5) # 輸出 媽媽媽媽媽媽媽媽媽媽
或者可以快速生成分隔線:
print("-" * 40) # 輸出 ----------------------------------------
列表生成
還可以用來增加列表中的元素數量:
print(["apple"] * 5) # 輸出 ['apple', 'apple', 'apple', 'apple', 'apple']
此運算符還有更實際的應用。例如,你想要創建一個由 10 個零組成的列表:
alist = [0] * 10
print(alist) # 輸出 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
甚至還能創建二維陣列。例如,你想要創建一個 20x10 的陣列,填滿為零。這也很簡單:
alist = [[0] * 10] * 20
print(alist) # 輸出 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
這真的很方便,不是嗎?
7.2 List Comprehension
Python 裡有個超級有用的工具叫「List Comprehension」(列表推導式)——這是一個可以用來生成列表的簡便方法。這個語法工具允許你在一行短短的程式碼裡,對每個可迭代物件的元素應用表達式生成新列表。
比起解釋,不如展示給你看。這個語法工具看起來是這樣的:
[表達式 for 變量 in 序列]
其中:
-
變量— 某個變量的識別符, -
序列— 變量接收的值序列(可以是列表、字串或用range函數獲得的對象), -
表達式— 某個通常依賴於在生成器中使用的變量的表達式,這個表達式將用來填充列表的元素。
重要! 整個表達式必須放在方括號內。
這裡有一些使用生成器的例子:
通過生成器創建一個由n個零組成的列表:
alist = [0 for i in range(100)]
創建一個由整數的平方數組成的列表:
n = 5
alist = [i ** 2 for i in range(n)]
創建一個由 1 到 n 的整數組成的列表:
n = 10
alist = [i + 1 for i in range(n)]
這樣還可以使用 random 模組的 randrange() 函數,生成一個由 1 到 9 隨機數組成的列表:
from random import randrange
n = 10
alist = [randrange(1, 10) for i in range(n)]
7.3 List Comprehension 的循環
List Comprehension 不僅可以用來生成列表。基本上,它就是一種書寫 for 迴圈的簡便方法。
例如,它可以用來從列表中簡單地打印出某些值:
alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
甚至可以從鍵盤輸入值:
a = [input() for i in range(int(input()))]
在這個例子中,列表將由從標準輸入讀取的字串構成:首先需要輸入列表元素的數量(這個值將作為 range 函數的參數),然後是指定數量的字串。
以你熟悉的方式,這段程式碼看起來會是這樣的:
n = int(input())
a = []
for i in range(n):
x = input()
a.append(x)
實際上,List Comprehension 的用法有很多種:
可以使用條件語句:
在表達式中包含條件語句可以過濾元素,例如,創建只包含偶數的列表:
[x for x in range(10) if x % 2 == 0]
嵌套循環:
生成器允許使用嵌套循環,例如,用來創建多維數組:
[(x, y) for x in range(3) for y in range(3)]
GO TO FULL VERSION