Python中的列表推導式是如何工作的?
Python中的列表推導式是一種非常強大的編程技巧,可以方便地創建新的列表。愛掏網 - it200.com與傳統的for循環結構相比,它不僅代碼更簡潔,而且可讀性更高,使得代碼更加易于維護和理解。愛掏網 - it200.com
在Python中,列表推導式采用了類似于數學中集合的概念,所以我們可以使用列表推導式來生成任何需要的列表。愛掏網 - it200.com下面就一起來了解一下Python中的列表推導式是如何工作的!
先來看看Python中列表推導式的基礎語法吧:
new_list = [expression for item in iterable if condition]
其中,expression
是要生成新列表的表達式,item
是迭代的元素,iterable
是要進行迭代的對象,if
是條件語句(可選)。愛掏網 - it200.com
例如,假設有一個列表 old_list = [1, 2, 3, 4, 5]
,我們可以使用列表推導式生成一個新的列表,其中每個元素都是原列表中的元素的平方值:
new_list = [x**2 for x in old_list]
print(new_list) # [1, 4, 9, 16, 25]
這里 x**2
就是 expression
,x
是 item
,old_list
是 iterable
。愛掏網 - it200.com
當然,我們也可以添加條件語句來篩選出符合要求的元素:
new_list = [x**2 for x in old_list if x > 2]
print(new_list) # [9, 16, 25]
這里的條件語句就是 if x > 2
。愛掏網 - it200.com
多重循環
除了簡單的列表生成,Python中的列表推導式還支持多重循環。愛掏網 - it200.com多重循環主要是用于嵌套的數據結構中,例如多維數組或字典等。愛掏網 - it200.com
假設我們有兩個列表,分別代表班級1和班級2的每個學生的分數,我們可以使用列表推導式來計算每個班級的總分數:
scores1 = [80, 90, 70, 60, 85]
scores2 = [75, 95, 80, 65, 90]
total1 = sum([x for x in scores1])
total2 = sum([x for x in scores2])
print(total1) # 385
print(total2) # 405
上面的代碼中,我們使用了內置函數 sum()
來計算每個班級的總分數。愛掏網 - it200.com我們在 for 循環中使用了列表推導式,從而僅遍歷了每個分數列表一次。愛掏網 - it200.com
嵌套列表推導式
嵌套列表推導式是指在列表推導式中,向列表推導式添加更多循環和/或條件語句,以生成更復雜的列表。愛掏網 - it200.com
假設有一組數據,包含三個城市和這些城市的溫度范圍,我們可以使用嵌套列表推導式來生成新的列表,其中包含每個城市的列表以及相應的溫度范圍:
data = [('New York', (-1, 6)), ('Chicago', (-4, 2)), ('San Francisco', (10, 15))]
city_temps = [[city, str(temp_low)+'-'+str(temp_high)+'C'] for city, (temp_low, temp_high) in data]
print(city_temps)
'''
[
['New York', '-1-6C'],
['Chicago', '-4-2C'],
['San Francisco', '10-15C']
]
'''
在上述例子中,我們使用了元組解包將城市和溫度范圍分別提取到兩個變量中。愛掏網 - it200.com然后,我們使用嵌套的列表推導式來生成新的列表。愛掏網 - it200.com
生成器表達式
除了列表推導式外,Python還支持生成器表達式。愛掏網 - it200.com生成器表達式的語法與列表推導式基本相同,但是它返回的是一個生成器對象,而不是一個列表。愛掏網 - it200.com