当前位置:   article > 正文

Python列表推导式(List Comprehensions)_python 列表推导

python 列表推导

列表推导式(List Comprehensions)是 Python 中一种简洁的创建列表的语法。它允许你从一个已有的可迭代对象(如列表、元组、字符串、集合或迭代器)中快速生成一个新的列表。

列表推导式基本语法

列表推导式的基本语法是:

[expression for item in iterable if condition]
  • 1

其中:

  • expression:对于可迭代对象中的每一个元素,都要执行这个表达式,结果将添加到新列表中。
  • item:可迭代对象中的每一个元素,通常用于在表达式中进行某种操作。
  • iterable:要进行迭代操作的可迭代对象。
  • if condition:这是一个可选的子句,用于过滤可迭代对象中的元素,只有满足条件的元素才会被考虑。

列表推导式的示例

下面是一些使用列表推导式的示例:

1. 创建一个包含 0 到 9 的平方的列表:

squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  • 1
  • 2

2. 创建一个包含列表中所有偶数的列表(假设原列表是 [1, 2, 3, 4, 5, 6]):

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

3. 创建一个包含字符串列表中所有大写字母的列表(假设原列表是 ['apple', 'banana', 'Cherry'],注意大小写):

fruits = ['apple', 'banana', 'Cherry']
uppercase_letters = [char for fruit in fruits for char in fruit if char.isupper()]
print(uppercase_letters)  # 输出: ['C', 'h', 'e', 'r', 'r', 'y']
  • 1
  • 2
  • 3

在这个例子中,我们使用了两个嵌套的 for 循环来遍历字符串列表中的每个字符串,以及每个字符串中的每个字符。

4. 创建一个包含 1 到 10 之间所有奇数的平方的列表:

odd_squares = [x**2 for x in range(1, 11) if x % 2 != 0]
print(odd_squares)  # 输出: [1, 9, 25, 49, 81]
  • 1
  • 2

其他用途

列表推导式(List Comprehensions)在Python中有许多其他用途,除了之前提到的数据转换和筛选数据外,还包括但不限于以下几种用途:

1. 组合数据

你可以使用列表推导式将多个列表的元素进行组合,生成新的列表结构。例如,你可以使用嵌套的列表推导式来创建一个二维列表的转置。

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print(transposed)  # 输出: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
  • 1
  • 2
  • 3

2. 执行复杂操作

列表推导式不仅限于简单的算术运算或条件判断,你还可以在其中执行更复杂的操作,如函数调用、属性访问等。

# 假设有一个Person类,具有name和age属性
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [Person("Alice", 25), Person("Bob", 30), Person("Charlie", 35)]
names = [person.name for person in people]
print(names)  # 输出: ['Alice', 'Bob', 'Charlie']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3. 循环执行某个函数

你可以使用列表推导式来循环执行某个函数,并将结果收集到一个列表中。

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squares = [square(x) for x in numbers]
print(squares)  # 输出: [1, 4, 9, 16, 25]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4. 将list转换为dict或将dict转换为list

虽然这不是列表推导式的直接用途,但你可以结合字典推导式(Dictionary Comprehensions)来实现这些转换。

例如,将一个包含元组的列表转换为字典:

items = [(1, 'apple'), (2, 'banana'), (3, 'cherry')]
dictionary = {key: value for key, value in items}
print(dictionary)  # 输出: {1: 'apple', 2: 'banana', 3: 'cherry'}
  • 1
  • 2
  • 3

或者,将一个字典的键值对转换为列表:

dictionary = {'a': 1, 'b': 2, 'c': 3}
keys = list(dictionary.keys())
values = list(dictionary.values())
print(keys)  # 输出: ['a', 'b', 'c']
print(values)  # 输出: [1, 2, 3]
  • 1
  • 2
  • 3
  • 4
  • 5

(注意:虽然这里使用了list()函数而不是列表推导式来转换字典的键和值,但列表推导式在更复杂的情况下仍然可以发挥作用。)

总的来说,列表推导式是Python中一种非常强大且灵活的工具,可以极大地简化代码并提高可读性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/957346
推荐阅读
相关标签
  

闽ICP备14008679号