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

一行代碼搞定復(fù)雜條件表達式判斷

開發(fā)
通常我們會使用 if 語句來實現(xiàn)邏輯判斷,但有時候,簡單的 if 語句可能顯得冗長且不夠優(yōu)雅。今天,我們就來聊聊如何用一行代碼搞定復(fù)雜的條件表達式判斷。

在 Python 編程中,條件判斷是必不可少的一部分。通常我們會使用 if 語句來實現(xiàn)邏輯判斷。但有時候,簡單的 if 語句可能顯得冗長且不夠優(yōu)雅。今天,我們就來聊聊如何用一行代碼搞定復(fù)雜的條件表達式判斷。

基本的條件表達式

首先,讓我們回顧一下基本的條件表達式——三元運算符。在 Python 中,我們可以用下面的形式來表示:

result = value_if_true if condition else value_if_false

這段代碼的意思是:如果 condition 條件為真,則 result 的值為 value_if_true;否則為 value_if_false。

示例 1:

假設(shè)我們要根據(jù)一個人的年齡來判斷他是否成年:

age = 20
is_adult = "成年人" if age >= 18 else "未成年人"
print(is_adult)  # 輸出:成年人

嵌套條件表達式

有時候,我們的需求不僅僅是簡單的二選一,而是需要多重條件判斷。這時,我們可以將多個條件表達式嵌套起來使用。

示例 2:

假設(shè)我們要根據(jù)一個人的成績來評定他的等級:

score = 85
grade = "優(yōu)秀" if score >= 90 else ("良好" if score >= 80 else "及格")
print(grade)  # 輸出:良好

這里,我們使用了兩層嵌套的條件表達式。如果 score 大于等于 90,則 grade 為 “優(yōu)秀”;否則再判斷 score 是否大于等于 80,如果是,則 grade 為 “良好”,否則為 “及格”。

使用列表推導式進行條件判斷

除了條件表達式外,我們還可以利用列表推導式來進行更復(fù)雜的條件判斷。

示例 3:

假設(shè)我們要從一個列表中篩選出所有偶數(shù):

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

這里,我們使用列表推導式來遍歷 numbers 列表,并通過條件 num % 2 == 0 來篩選出所有偶數(shù)。

使用字典推導式進行條件判斷

類似地,我們也可以使用字典推導式來進行條件判斷。

示例 4:

假設(shè)我們要根據(jù)學生的成績來生成一個包含等級的字典:

students = {"Alice": 85, "Bob": 92, "Charlie": 78}
grades = {name: "優(yōu)秀" if score >= 90 else ("良好" if score >= 80 else "及格") for name, score in students.items()}
print(grades)  # 輸出:{'Alice': '良好', 'Bob': '優(yōu)秀', 'Charlie': '及格'}

這里,我們使用字典推導式來遍歷 students 字典,并通過條件表達式來生成一個新的字典 grades。

使用 lambda 函數(shù)進行條件判斷

除了列表推導式和字典推導式,我們還可以使用 lambda 函數(shù)來簡化條件判斷。

示例 5:

假設(shè)我們需要一個函數(shù)來判斷一個數(shù)是否為正數(shù),并返回相應(yīng)的信息:

is_positive = lambda x: "正數(shù)" if x > 0 else "非正數(shù)"
print(is_positive(5))  # 輸出:正數(shù)
print(is_positive(-3))  # 輸出:非正數(shù)

這里,我們定義了一個 lambda 函數(shù) is_positive,它接受一個參數(shù) x 并返回相應(yīng)的判斷結(jié)果。

使用 map() 和 filter() 進行條件判斷

對于更復(fù)雜的條件判斷,我們可以結(jié)合使用 map() 和 filter() 函數(shù)。

示例 6:

假設(shè)我們要從一個列表中篩選出所有正數(shù),并計算它們的平方:

numbers = [-5, 3, 7, -2, 8, 0]
positive_squares = list(map(lambda x: x ** 2, filter(lambda x: x > 0, numbers)))
print(positive_squares)  # 輸出:[9, 49, 64]

這里,我們先使用 filter() 函數(shù)篩選出所有的正數(shù),然后使用 map() 函數(shù)計算它們的平方。

使用 itertools.compress() 進行條件判斷

對于更復(fù)雜的條件組合,可以使用 itertools.compress() 函數(shù)來實現(xiàn)。

示例 7:

假設(shè)我們要從一個列表中篩選出所有奇數(shù),并計算它們的立方:

import itertools

numbers = [-5, 3, 7, -2, 8, 0]
selectors = [True if num % 2 != 0 else False for num in numbers]
odd_cubes = list(itertools.compress([num ** 3 for num in numbers], selectors))
print(odd_cubes)  # 輸出:[-125, 27, 343]

這里,我們首先生成一個選擇器列表 selectors,用于判斷哪些數(shù)是奇數(shù)。然后使用 itertools.compress() 函數(shù)來篩選出奇數(shù),并計算它們的立方。

實戰(zhàn)案例:學生信息處理

現(xiàn)在,我們來看一個實際的應(yīng)用案例:處理學生信息并根據(jù)成績生成等級。

假設(shè)我們有一個學生信息列表,每個學生的信息包括姓名、成績和班級。我們需要根據(jù)成績生成學生的等級,并按班級進行分組。

數(shù)據(jù)準備:

students = [
    {"name": "Alice", "score": 85, "class": "A"},
    {"name": "Bob", "score": 92, "class": "B"},
    {"name": "Charlie", "score": 78, "class": "A"},
    {"name": "David", "score": 88, "class": "B"},
    {"name": "Eva", "score": 91, "class": "A"}
]

解決方案:

# 定義一個函數(shù)來生成等級
def get_grade(score):
    return "優(yōu)秀" if score >= 90 else ("良好" if score >= 80 else "及格")

# 使用列表推導式生成新的學生信息列表,包含等級
students_with_grades = [
    {**student, "grade": get_grade(student["score"])} for student in students
]

# 按班級分組
from collections import defaultdict

grouped_students = defaultdict(list)
for student in students_with_grades:
    grouped_students[student["class"]].append(student)

# 打印結(jié)果
for class_name, class_students in grouped_students.items():
    print(f"班級 {class_name}:")
    for student in class_students:
        print(f"  姓名: {student['name']}, 成績: {student['score']}, 等級: {student['grade']}")

輸出結(jié)果:

班級 A:
  姓名: Alice, 成績: 85, 等級: 良好
  姓名: Charlie, 成績: 78, 等級: 及格
  姓名: Eva, 成績: 91, 等級: 優(yōu)秀
班級 B:
  姓名: Bob, 成績: 92, 等級: 優(yōu)秀
  姓名: David, 成績: 88, 等級: 良好
責任編輯:趙寧寧 來源: PythonAI與圖像處理
相關(guān)推薦

2025-04-09 11:20:00

LINQ代碼數(shù)據(jù)處理

2010-03-12 17:44:21

Python正則表達式

2021-02-24 14:30:59

JavaScript語言開發(fā)

2024-05-31 14:04:18

2025-02-12 09:55:01

Java代碼性能

2023-09-06 09:40:29

2022-02-24 10:40:14

Python代碼

2023-11-10 09:41:44

Python代碼

2024-04-30 08:05:15

Rust代碼計算

2009-07-06 15:20:30

JSP表達式

2016-12-02 08:53:18

Python一行代碼

2024-03-01 08:51:01

Django查詢表達式查詢語句

2014-01-05 17:41:09

PostgreSQL表達式

2009-09-16 18:03:05

Java正則表達式正則表達式實現(xiàn)

2021-10-29 10:38:20

代碼 PILPython

2024-01-05 17:41:36

Rust編程循環(huán)

2023-11-30 08:21:33

2009-11-17 10:20:37

PHP正則表達式

2009-03-23 10:47:43

數(shù)據(jù)庫SQLLINQ

2019-03-13 08:56:07

JavaSpEL表達式注入
點贊
收藏

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