持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
python 列表嵌套
列表理解提供了一种简洁的方法,用于将操作应用于通过迭代可迭代值提供的序列值。它创建一个新列表,其中每个元素都是将给定操作应用于可迭代值(例如,另一个列表中的元素)的结果。它是形式的表达
计算表达式等效于调用函数
例如,[e2 表示范围 (6)] 中的 e 的计算结果为 [0, 1, 4, 9, 16, 25],[e2 表示范围 (8) 中的 e,如果 e%2 == 0] 的计算结果为 [0, 4, 16, 36],则 [x**2 表示 [2, 'a', 3, 4.0] 的 x,如果类型 (x)== int] 计算结果为 [4, 9]。
列表理解提供了一种初始化列表的便捷方法。例如,[[] for _in范围 (10)] 生成一个包含 10 个不同(即非别名)空列表的列表。该变量name_indicates该变量的值不用于生成 list 的元素,即它只是一个占位符。这种约定在Python程序中很常见。
蟒蛇允许多个为语句在一个列表理解。考虑代码
Python 解释器首先计算第一个 for,将值 0、2、4 的序列赋给 x。对于 x 的这三个值中的每一个,它计算第二个 for(每次生成值 o,3 的序列)。然后,它将元组 (x, y) 添加到正在生成的列表中,从而生成列表
[(0, 0),(0, 3), (2, 0), (2, 3), (4, 0), (4, 3)]
当然,我们可以在没有列表理解的情况下生成相同的列表,但代码要紧凑得多:
下面的代码是在列表理解中嵌套列表理解的示例。
它打印 [[(0, 0), (2, 0),(4,0)], [(0, 3), (2, 3), (4, 3)]]。需要练习才能熟悉嵌套列表理解,但它们可能非常有用。让我们使用嵌套列表推导来生成所有小于 100 的素数的列表。基本思想是使用一个理解来生成所有候选数的列表(即,2到99),第二个理解生成将候选素数除以每个潜在除数的余数列表,以及内置函数al1来测试这些余数中是否有任何一个是O。
计算表达式等效于调用函数
练习:写一个列表理解,生成2到100之间的所有非素数。
一些Python程序员以奇妙而微妙的方式使用列表理解。这并不总是一个好主意。请记住,其他人可能需要读取您的代码,并且“微妙”很少是程序的理想属性。