自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 列表推導(dǎo)式與集合推導(dǎo)式:異同與應(yīng)用場(chǎng)景

開發(fā) 后端
本文詳細(xì)介紹了 Python 中的列表推導(dǎo)式和集合推導(dǎo)式,通過(guò)具體的示例和實(shí)戰(zhàn)案例,展示了如何在實(shí)際開發(fā)中靈活運(yùn)用這兩種強(qiáng)大的工具。

列表推導(dǎo)式和集合推導(dǎo)式是 Python 中非常強(qiáng)大的工具,可以讓你以簡(jiǎn)潔的方式創(chuàng)建列表和集合。它們?cè)谡Z(yǔ)法上非常相似,但有一些重要的區(qū)別。本文將詳細(xì)介紹列表推導(dǎo)式和集合推導(dǎo)式的基本概念、語(yǔ)法、應(yīng)用場(chǎng)景以及它們之間的異同點(diǎn)。

1. 列表推導(dǎo)式

(1) 基本概念

列表推導(dǎo)式是一種快速創(chuàng)建列表的方法。它允許你在一行代碼中生成一個(gè)新的列表,而不需要使用傳統(tǒng)的 for 循環(huán)。

(2) 語(yǔ)法

new_list = [expression for item in iterable if condition]
  • expression:對(duì)每個(gè)元素執(zhí)行的操作。
  • item:迭代變量。
  • iterable:可迭代對(duì)象(如列表、元組、字符串等)。
  • if condition:可選的條件語(yǔ)句,用于過(guò)濾元素。

(3) 示例

假設(shè)我們有一個(gè)列表,包含一些數(shù)字,我們想創(chuàng)建一個(gè)新的列表,其中只包含偶數(shù):

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)  # 輸出: [2, 4, 6, 8, 10]

2. 集合推導(dǎo)式

(1) 基本概念

集合推導(dǎo)式類似于列表推導(dǎo)式,但它用于創(chuàng)建集合而不是列表。集合中的元素是唯一的,沒(méi)有重復(fù)項(xiàng)。

(2) 語(yǔ)法

new_set = {expression for item in iterable if condition}
  • expression:對(duì)每個(gè)元素執(zhí)行的操作。
  • item:迭代變量。
  • iterable:可迭代對(duì)象(如列表、元組、字符串等)。
  • if condition:可選的條件語(yǔ)句,用于過(guò)濾元素。

(3) 示例

假設(shè)我們有一個(gè)列表,包含一些數(shù)字,我們想創(chuàng)建一個(gè)新的集合,其中只包含偶數(shù):

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10]
even_numbers_set = {num for num in numbers if num % 2 == 0}
print(even_numbers_set)  # 輸出: {2, 4, 6, 8, 10}

3. 列表推導(dǎo)式與集合推導(dǎo)式的異同

相同點(diǎn):

  • 語(yǔ)法結(jié)構(gòu)相似,都包含表達(dá)式、迭代變量、可迭代對(duì)象和條件語(yǔ)句。
  • 都可以用于快速生成新的數(shù)據(jù)結(jié)構(gòu)。
  • 都支持嵌套推導(dǎo)式。

不同點(diǎn):

  • 數(shù)據(jù)結(jié)構(gòu):列表推導(dǎo)式生成的是列表,集合推導(dǎo)式生成的是集合。
  • 唯一性:集合中的元素是唯一的,而列表中的元素可以重復(fù)。
  • 順序:列表保持插入順序,集合不保證順序。

4. 應(yīng)用場(chǎng)景

列表推導(dǎo)式:

  • 數(shù)據(jù)處理:快速生成新的列表,例如過(guò)濾、轉(zhuǎn)換數(shù)據(jù)。
  • 性能優(yōu)化:相比傳統(tǒng)的 for 循環(huán),列表推導(dǎo)式通常更高效。

集合推導(dǎo)式:

  • 去重:快速去除重復(fù)元素。
  • 集合操作:進(jìn)行集合運(yùn)算,如并集、交集、差集等。

5. 實(shí)踐示例

(1) 列表推導(dǎo)式示例

假設(shè)我們有一個(gè)列表,包含一些字符串,我們想創(chuàng)建一個(gè)新的列表,其中每個(gè)字符串都被轉(zhuǎn)換為大寫:

words = ['apple', 'banana', 'cherry']
upper_words = [word.upper() for word in words]
print(upper_words)  # 輸出: ['APPLE', 'BANANA', 'CHERRY']

(2) 集合推導(dǎo)式示例

假設(shè)我們有兩個(gè)列表,分別包含一些數(shù)字,我們想找到兩個(gè)列表中的公共元素:

list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
common_elements = {num for num in list1 if num in list2}
print(common_elements)  # 輸出: {4, 5}

6. 實(shí)戰(zhàn)案例

假設(shè)我們有一個(gè)包含多個(gè)子列表的列表,每個(gè)子列表代表一個(gè)學(xué)生的成績(jī)記錄。我們想找出所有學(xué)生的最高分,并統(tǒng)計(jì)每個(gè)最高分出現(xiàn)的次數(shù)。

# 學(xué)生成績(jī)記錄
grades = [
    [85, 90, 92],
    [78, 88, 95],
    [92, 98, 89],
    [88, 92, 95],
    [90, 95, 98]
]

# 使用列表推導(dǎo)式找到每個(gè)學(xué)生的最高分
highest_grades = [max(student) for student in grades]
print(highest_grades)  # 輸出: [92, 95, 98, 95, 98]

# 使用集合推導(dǎo)式找到所有不同的最高分
unique_highest_grades = {grade for grade in highest_grades}
print(unique_highest_grades)  # 輸出: {92, 95, 98}

# 統(tǒng)計(jì)每個(gè)最高分出現(xiàn)的次數(shù)
from collections import Counter
grade_counts = Counter(highest_grades)
print(grade_counts)  # 輸出: Counter({95: 2, 98: 2, 92: 1})

總結(jié)

本文詳細(xì)介紹了 Python 中的列表推導(dǎo)式和集合推導(dǎo)式,包括它們的基本概念、語(yǔ)法、應(yīng)用場(chǎng)景以及它們之間的異同點(diǎn)。通過(guò)具體的示例和實(shí)戰(zhàn)案例,展示了如何在實(shí)際開發(fā)中靈活運(yùn)用這兩種強(qiáng)大的工具。

責(zé)任編輯:趙寧寧 來(lái)源: 手把手PythonAI編程
相關(guān)推薦

2024-06-21 15:19:40

2024-12-17 09:00:00

lambda函數(shù)Python

2021-03-02 09:35:33

Python循環(huán)開發(fā)

2024-05-20 12:00:00

Python列表推導(dǎo)式

2024-11-21 06:00:00

Python列表推導(dǎo)式

2024-05-20 08:30:00

Python編程

2021-03-03 12:55:30

Python列表推導(dǎo)式代碼

2024-02-21 20:43:02

Python列表推導(dǎo)式

2023-04-28 07:42:02

2025-01-03 08:48:20

列表推導(dǎo)式Python編程

2023-12-07 19:33:09

Python推導(dǎo)式

2024-10-28 17:06:50

2024-11-27 06:46:47

Python列表推導(dǎo)式嵌套邏輯

2024-04-24 11:27:16

字典推導(dǎo)式Python

2023-10-04 00:43:46

推導(dǎo)式Python

2024-11-12 06:27:16

Python列表元組

2022-10-08 15:32:24

Python開發(fā)技巧

2024-04-30 15:05:36

Python接口自動(dòng)化

2023-10-19 07:42:37

Python數(shù)據(jù)類型

2014-05-15 09:43:11

CloudaMobile WebANodejs
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)