在Python中,列表推导式(List Comprehension)提供了一种简洁高效的方式,让你能够基于现有列表快速创建新列表。
为什么要用列表推导式?
假设你有一个水果列表,现在想创建一个新列表,其中仅包含名字里带字母a
的水果。传统做法是:
fruits = ["pingguo", "xiangjiao", "yingtao", "juzi"]
newlist = []
for fruit in fruits:
if "a" in fruit:
newlist.append(fruit)
print(newlist)
# 输出: ['xiangjiao']
而使用列表推导式,一行代码即可搞定:
fruits = ["pingguo", "xiangjiao", "yingtao", "juzi"]
newlist = [fruit for fruit in fruits if "a" in fruit]
print(newlist)
# 输出: ['xiangjiao']
列表推导式语法结构
列表推导式的标准语法:
newlist = [表达式 for 变量 in 可迭代对象 if 条件]
其中,if 条件
是可选的。
不使用条件的列表推导式示例
numbers = [x for x in range(5)]
print(numbers)
# 输出: [0, 1, 2, 3, 4]
带有条件的列表推导式示例
例如,仅保留小于5的数字:
numbers = [x for x in range(10) if x < 5]
print(numbers)
# 输出: [0, 1, 2, 3, 4]
表达式中进行运算或修改
你还可以在列表推导式中对结果进行处理或修改:
numbers = [x * 2 for x in range(5)]
print(numbers)
# 输出: [0, 2, 4, 6, 8]
或者使用条件表达式进一步操作:
fruits = ["pingguo", "xiangjiao", "yingtao"]
newlist = [x if x != "xiangjiao" else "chengzi" for x in fruits]
print(newlist)
# 输出: ['pingguo', 'orange', 'yingtao']
列表推导式的优点
- 代码更简洁易读
- 执行效率高于普通循环
- 适合快速创建、修改列表
熟练掌握列表推导式,能够让你在Python编程中更灵活、更高效地处理列表数据,大幅提升代码的质量。