Python推导式使用详情

  • Post category:Python

Python推导式使用详情

什么是Python推导式

Python推导式(Comprehensions)是Python语言中一种简洁高效的语法结构,用于创建可迭代对象(iterable)序列,推导式可以取代使用循环和条件语句生成序列的复杂过程。Python提供了三种推导式语法:列表推导式、字典推导式和集合推导式。

列表推导式

列表推导式是Python推导式中最常用的一种语法结构,用于创建一个新的列表。其基本语法结构为:[expression for item in iterable],其中:

  • expression:表达式,可以由变量、运算符、函数和常量组合而成,最终生成一个值。
  • item: 从iterable中循环取出的元素。
  • iterable: 可迭代对象(iterable),包含一个可遍历的元素集合,可以是列表、元组、集合等。

下面给出一个简单的示例:生成一个以10为序列长度的,随机生成数在0到100之间的整数列表。使用传统方法需要使用循环和randint函数来生成序列,如下所示:

from random import randint
result = []
for i in range(10):
    result.append(randint(0, 100))
print(result)

运行上述代码后输出:[41, 63, 51, 64, 47, 47, 80, 79, 74, 71]。可以看出,使用循环和函数生成列表的代码比较繁琐。

下面使用列表推导式实现同样的功能,代码如下所示:

from random import randint
result = [randint(0, 100) for i in range(10)]
print(result)

运行上述代码后输出:[15, 96, 23, 83, 64, 12, 15, 30, 80, 81]。使用列表推导式生成列表的代码简洁明了,并且不需要使用循环和函数。

字典推导式

字典推导式是Python推导式中用于生成字典的一种语法结构,其基本语法结构为:{key-expression : value-expression for item in iterable},其中:

  • key-expression:字典中的键,可以是任意Python表达式。
  • value-expression:字典中的值,可以是任意Python表达式。
  • item:从iterable中循环取出的元素。
  • iterable:可迭代对象(iterable)。

下面给出一个简单的示例:生成一个以月份为键,天数为值的字典,使用传统方法需要使用循环和判断语句生成字典,如下所示:

month_days = {}
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for i in range(len(months)):
    month_days[months[i]] = days[i]
print(month_days)

运行上述代码后输出:{‘Jan’: 31, ‘Feb’: 28, ‘Mar’: 31, ‘Apr’: 30, ‘May’: 31, ‘Jun’: 30, ‘Jul’: 31, ‘Aug’: 31, ‘Sep’: 30, ‘Oct’: 31, ‘Nov’: 30, ‘Dec’: 31}。可以看出,生成字典的代码较为复杂。

下面使用字典推导式实现同样的功能,代码如下所示:

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month_days = {months[i]: days[i] for i in range(len(months))}
print(month_days)

运行上述代码后输出:{‘Jan’: 31, ‘Feb’: 28, ‘Mar’: 31, ‘Apr’: 30, ‘May’: 31, ‘Jun’: 30, ‘Jul’: 31, ‘Aug’: 31, ‘Sep’: 30, ‘Oct’: 31, ‘Nov’: 30, ‘Dec’: 31}。使用字典推导式生成字典的代码简洁明了,并且不需要使用循环和判断语句。

集合推导式

集合推导式是Python推导式中用于生成集合的一种语法结构,其基本语法结构为:{expression for item in iterable},其中:

  • expression:表达式,可以由变量、运算符、函数和常量组合而成,最终生成一个值。
  • item: 从iterable中循环取出的元素。
  • iterable: 可迭代对象(iterable),包含一个可遍历的元素集合。

下面给出一个简单的示例:生成一个随机生成数在0到100之间的整数集合。使用传统方法需要使用循环和randint函数来生成集合,如下所示:

from random import randint
result = set()
for i in range(10):
    result.add(randint(0, 100))
print(result)

运行上述代码后输出:{56, 33, 64, 42, 78, 81, 15, 83, 84, 63}。可以看出,使用循环和函数生成集合的代码比较繁琐。

下面使用集合推导式实现同样的功能,代码如下所示:

from random import randint
result = {randint(0, 100) for i in range(10)}
print(result)

运行上述代码后输出:{16, 17, 49, 83, 85, 22, 92, 41, 76, 46}。使用集合推导式生成集合的代码简洁明了,并且不需要使用循环和函数。

总结

Python推导式是一种简洁高效的语法结构,可以让我们更加方便快捷地生成序列、字典和集合等可迭代对象。在日常编程中,推导式结构可以降低代码量,提升编写效率。理解掌握Python推导式的使用技巧,可以为我们在编程中带来很大的帮助。