【python基础之列表生成式】---列表生成式
前言
由于之前也简述过相关列表生成式的一些内容,今天就单独将这个内容拿出来也当学习也当分享。
Python 中的列表生成式(List Comprehension)是一种简洁、高效的方式来生成新的列表。它可以在一个语句中创建一个新的列表,并且允许我们通过简洁的语法来筛选、转换或操作已有的列表。
列表生成式的基本语法
列表生成式的语法基本结构为:
new_list = [expression for item in iterable if condition]
其中:
- expression:是一个表达式,用于对- item进行操作,生成新的元素,这是列表生成式必须要有的部分。
- item:是在- iterable中的元素,可以是列表、元组、字符串、集合、字典等可迭代对象。
- iterable:是一个可迭代对象,可以是列表、元组、字符串、集合、字典等。
- condition:是一个可选的条件,用于筛选- item,只有满足条件的- item才会被加入到新列表中。
基本示例
让我们来看一个基本的示例。假设我们有一个列表,需要生成一个新的列表,其中每个元素是原列表中的元素的平方:
numbers = [1, 2, 3, 4, 5]
squares = [num ** 2 for num in numbers]
print(squares)  # 输出 [1, 4, 9, 16, 25]
在上面的代码中,我们使用列表生成式生成了一个新的列表squares,其中每个元素是原列表numbers中的元素的平方。列表生成式的语法为[num ** 2 for num in numbers],其中表达式num ** 2对原列表中的每个元素进行了操作,生成了一个新的元素。
带有条件的列表生成式
列表生成式还可以包含条件表达式,用于筛选原列表中的元素。例如,我们可以使用以下列表生成式,生成一个新的列表,其中只包含原列表中的偶数:
numbers = [1, 2, 3, 4, 5]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)  # 输出 [2, 4]
在上面的代码中,我们使用带有条件的列表生成式[num for num in numbers if num % 2 == 0],生成了一个新的列表even_numbers,其中只包含原列表numbers中的偶数。条件表达式if num % 2 == 0用于筛选原列表中的元素,只有符合条件的元素才会被加入到新列表中。
嵌套列表生成式
嵌套列表生成式指的是在一个列表生成式中使用多个循环语句,来生成嵌套的列表。
其语法形式为:
[[expression] for item in iterable1 [for item2 in iterable2] ...]
其中,iterable1 为最外层循环的可迭代对象,iterable2 为内层循环的可迭代对象。expression 是生成元素的表达式,可以使用 item 和 item2 以及其他变量。
下面以一个例子来说明:
matrix = [[i+j for j in range(3)] for i in range(4)]
print(matrix)
输出结果为:
[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5]]
在这个例子中,我们使用了两个循环语句,外层循环是 for i in range(4),内层循环是 for j in range(3)。在内层循环中,我们使用了 i 和 j,并且计算了它们的和作为生成的元素,即 i+j。最终,通过列表生成式生成了一个 4 行 3 列的嵌套列表。
需要注意的是,内层循环的语句可以出现在外层循环的语句之前,但是生成的列表的结构是相同的。
使用函数
列表生成式不仅可以使用简单的表达式,还可以使用函数来对元素进行操作。通过在列表生成式中调用函数,可以对元素进行自定义的操作和处理。
例如,假设有一个字符串列表,我们想要对其中的每个字符串都进行反转操作,并生成一个新的列表。可以使用以下代码实现:
words = ['hello', 'world', 'python']
reverse_words = [word[::-1] for word in words]
print(reverse_words)
这里使用了字符串的切片操作来反转字符串。输出结果为:['olleh', 'dlrow', 'nohtyp']。
除了使用字符串的切片操作,我们还可以使用内置函数 reversed() 来对字符串进行反转操作。例如:
def reverse_string(string):
    return ''.join(reversed(string))
words = ['hello', 'world', 'python']
reverse_words = [reverse_string(word) for word in words]
print(reverse_words)
这里定义了一个 reverse_string() 函数来对字符串进行反转操作。使用 join() 函数将反转后的字符串转换为字符串类型。输出结果和之前的一样:['olleh', 'dlrow', 'nohtyp']。
使用函数可以让列表生成式更加灵活和强大,可以根据实际需求对元素进行自定义的操作和处理。
本文来自博客园,作者:Unfool,转载请注明原文链接:https://www.cnblogs.com/queryH/p/17904089.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号