Python 中的列表推导式详解 python列表讲解

liftword3周前 (12-19)技术文章19

·

在 Python 中,列表推导式是一种简洁而富有表现力的方式,通过以紧凑的语法指定元素和条件来创建数据结构,如列表、字典和集合,通常使用单行代码,而不是使用传统的循环和附加操作。

在 Python 中,主要有三种类型的推导式: 列表推导式词典推导 集合推导式列表推导式:列表推导式提供了一种简洁的方法来创建列表,方法是遍历 'iterable' 对象并将表达式应用于每个元素。基本语法如下:[item for item in iterable]

词典推导式:与列表推导式类似,字典推导式允许您创建词典。基本语法是:{key_expression: value_expression for item in iterable}

集合推导式:集合推导式使用类似的语法来列出推导式,但它们使用大括号,而不是方括号。集合推导式会自动从结果集中删除重复的元素。基本语法是:{expression for item in iterable}

这些推导式中的每一个都会根据指定的表达式和条件生成不同类型的集合(列表、字典或集合)。让我们详细看看这些。

列表推导式

列表推导式的基本语法是:[expression for item in iterable]

  • expression:是要为每个元素计算的操作或值。
  • item: 是表示可迭代对象中每个元素的变量。
  • iterable:任何 Python 可迭代对象,如列表、元组、字符串等。
# Code using loop to create a list of first 10 even numbers
even_nums = []
for x in range(2, 21, 2):
  even_nums.append(x)
print(even_nums)

# List comprehension equivalent for creating a list of first 10 even numbers
even_nums = [x for x in range(2, 21, 2)]
print(even_nums)

创建一个介于 2 和 20 之间的偶数列表

# Code using loop to create squares of a list of numbers (Using even_nums list)
squares = []
for x in even_nums:
squares.append(x**
2)
print(squares)

# List Comprehension equivalent for calculating squares
squares = [x**
2 for x in even_nums]
print(squares)

带有 if 条件的列表推导式的语法:[expression for item in iterable if condition]

  • expression:是要为每个元素计算的操作或值。
  • item: 是表示可迭代对象中每个元素的变量。
  • iterable:任何 Python 可迭代对象,如列表、元组、字符串等。
  • condition:这是一个可选表达式,可用于筛选项目。
# Code using loop to generate list of numbers divisible by 3
num_lst = list(range(1, 31))
div_by_3 = []
for x in num_lst:
  if x%3 == 0:
    div_by_3.append(x)
print(div_by_3)

# List Comprehension equivalent to generating list of numbers divisible by 3
div_by_3 = [x for x in num_lst if x%3==0]
print(div_by_3)

带有 if else 条件的列表推导式的语法:[expression if condition else alt_value for item in iterable]

哪里:

  • expression:是要为每个元素计算的操作或值。
  • item: 是表示可迭代对象中每个元素的变量。
  • iterable:任何 Python 可迭代对象,如列表、元组、字符串等。
  • condition:这是一个可选表达式,可用于在满足条件时提供值。
  • else:这是一个可选表达式,可用于在不满足条件时提供值。
# Code using loop to generate list of dictionaries odd & even numbers
num_lst = list(range(1, 14))
odd_even = []
for x in num_lst:
  if x%2 == 0:
    odd_even.append({x:'even'})
  else:
    odd_even.append({x:'odd'})
print(odd_even)

# Comprehension equivalent to generating list of dictionaries of odd & even numbers
odd_even = [{x:'even'} if x%2==0 else {x:'odd'} for x in num_lst]
print(odd_even)


虽然列表推导是最常见的,但字典和集合推导并无太大区别,可以/应该以相同的效果和逻辑来实现,以充分利用这些独特的数据结构。

推导式对于以简洁易读的方式转换数据、筛选数据或创建数据组合非常有用。与使用循环相比,它们还可以提高代码的性能。虽然它们可以使代码更简洁,但过于复杂的理解有时会降低可读性,因此不应过度使用或嵌套得太深。在 Python 代码中使用推导式时,必须在可读性和简洁性之间保持平衡。

相关文章

python入门009:遍历列表 遍历列表 python

一、遍历列表遍历,简单理解就是对每个数据都过一遍。1、简单遍历在程序中,有时需要遍历列表中的所有元素,对每个元素都执行相同的操作。例如,想要逐个显示列表中的人名元素,这时可以通过使用for循环实现列表...

一文掌握在 Python 中遍历列表的 8 种基本方法

在本文中,我们将学习如何在 Python 中遍历列表。您可以根据需要或过程效率选择最佳方法。1.使用 for 循环遍历列表使用 for 循环在列表中进行迭代是实现遍历列表的最简单和最基本的方法。「语法...

python 列表的遍历和循环 python列表的遍历输出

在Python中,列表是一种常用的数据结构,用于存储一组有序的元素。列表的遍历和循环是常见的操作,可以通过多种方式实现。1. 使用for循环遍历列表:my_list = [1, 2, 3, 4, 5]...

Python列表的使用方法 python列表的常用方法

理解 Python 列表从本质上讲,列表是项目的集合,每个项目都由一个索引标识。列表的用途非常广泛,可以存储各种数据类型,包括数字、字符串,甚至其他列表。它们是 Python 的基本数据结构之一,广泛...

python笔记2-遍历文件夹目录os.walk()

如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件walk功能简介os.walk() 方法可以用于在文件目录中进行查找和遍历操作。os.walk() 方法是一个简单易用的文件、目录遍...