Python中级之列表字典推导式和三元运算符
列表生成式
列表生成式是一种在 Python 中用于创建列表的简洁和优雅的语法。它允许你使用一行代码生成一个新的列表,而不必使用传统的循环语句。以下是列表生成式的基本语法:
[expression for item in iterable if condition]
expression
: 用于生成新列表中每个元素的表达式。item
: 可迭代对象中的每个元素。iterable
: 可迭代对象,如列表、字符串、元组等。condition
: 可选的条件,用于过滤元素。
以下是一些使用列表生成式的例子:
1. 生成一个数字列表:
# 生成一个包含 0 到 9 的数字列表
numbers = [x for x in range(10)]
print(numbers)
# 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. 生成平方数列表:
# 生成包含 0 到 9 的数字的平方数列表
squares = [x**2 for x in range(10)]
print(squares)
# 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
3. 过滤奇数:
# 生成包含 0 到 9 的数字中的偶数列表
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
# 输出: [0, 2, 4, 6, 8]
4. 字符串处理:
# 生成一个字符串中所有字符的大写形式的列表
text = "hello"
uppercase_chars = [char.upper() for char in text]
print(uppercase_chars)
# 输出: ['H', 'E', 'L', 'L', 'O']
5. 嵌套列表生成式:
# 生成一个包含两个列表中所有元素对的和的列表
list1 = [1, 2, 3]
list2 = [4, 5, 6]
sums = [x + y for x in list1 for y in list2]
print(sums)
# 输出: [5, 6, 7, 6, 7, 8, 7, 8, 9]
列表生成式提供了一种简洁而清晰的方式来创建新的列表,尤其在需要对已有的数据进行转换、过滤或组合时非常有用。
字典生成式
字典生成式是一种简洁而强大的语法,用于快速创建字典。与列表生成式类似,字典生成式使用一种紧凑的语法来生成字典。以下是字典生成式的基本语法:
{key_expression: value_expression for item in iterable}
key_expression
: 用于生成字典键的表达式。value_expression
: 用于生成字典值的表达式。item
: 可迭代对象中的每个元素。
下面是一些使用字典生成式的例子:
1. 创建字典:
# 使用字典生成式创建字典
my_dict = {x: x**2 for x in range(5)}
print(my_dict)
# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
2. 创建字母和对应ASCII码的字典:
# 创建字母和对应ASCII码的字典
ascii_dict = {char: ord(char) for char in 'abcdefghijklmnopqrstuvwxyz'}
print(ascii_dict)
# 输出: {'a': 97, 'b': 98, 'c': 99, ..., 'z': 122}
3. 字典生成式中的条件判断:
# 使用条件判断生成字典,只包含偶数的平方
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares)
# 输出: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
4. 嵌套字典生成式:
# 嵌套字典生成式,创建一个嵌套的字典
nested_dict = {x: {f'Square': x**2, f'Cube': x**3} for x in range(3)}
print(nested_dict)
# 输出: {0: {'Square': 0, 'Cube': 0}, 1: {'Square': 1, 'Cube': 1}, 2: {'Square': 4, 'Cube': 8}}
字典生成式是一种非常方便的方式,可以根据特定规则从一个可迭代对象中创建字典。
三元运算符
在 Python 中,三元运算符是一种紧凑的条件表达式,也称为条件表达式。它提供了一种简洁的方式来表示基于条件的值的选择。三元运算符的基本语法如下:
value_if_true if condition else value_if_false
其中:
condition
是一个表达式,如果结果为True
,则选择value_if_true
的值,否则选择value_if_false
的值。
以下是一些使用三元运算符的例子:
1. 简单的条件选择:
# 如果 x 大于 0,选择 "Positive",否则选择 "Non-positive"
x = 5
result = "Positive" if x > 0 else "Non-positive"
print(result)
# 输出: Positive
2. 数值的最大值选择:
# 选择两个数中的最大值
a, b = 10, 5
max_value = a if a > b else b
print(max_value)
# 输出: 10
3. 列表中的条件选择:
# 生成一个包含奇偶性字符串的列表
numbers = [1, 2, 3, 4, 5]
even_odd_labels = ["Even" if num % 2 == 0 else "Odd" for num in numbers]
print(even_odd_labels)
# 输出: ['Odd', 'Even', 'Odd', 'Even', 'Odd']
4. 嵌套的三元运算符:
# 嵌套的三元运算符,判断奇偶性并输出对应的字符串
number = 7
result = "Even" if number % 2 == 0 else ("Negative" if number < 0 else "Positive")
print(result)
# 输出: Positive
三元运算符是一种常见的用于简化代码的技巧,但在使用时要确保代码可读性,不要过度使用导致代码难以理解。