列表推导式是一种易于阅读、紧凑且优雅的使用迭代对象创建列表的方式。通常格式是括在方括号中的单行代码。您可以使用它来筛选、格式化、修改现有可迭代对象。
语法格式如下:
vals = [expression for value in collection if condition]
下面的代码是最简单的列表推导式的示例。在这里,我们只是循环遍历并将其所有元素存储在列表中。
>>> lst = [1,2,3,4,5,6,7,8,9,10]
>>> a = [x for x in lst]
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
上面的代码等效于:
a = []
lst = [1,2,3,4,5,6,7,8,9,10]
for i in lst:
a.append(i)
我们可以使用任何表达式来修改列表的元素,还可以添加一个条件,这可以帮助我们过滤数据。
>>> lst = [1,2,3,4,5,6,7,8,9,10]
>>> a = [x*2 for x in lst if x > 4]
>>> print(a)
[10, 12, 14, 16, 18, 20]
上面的代码等效于:
a = []
lst = [1,2,3,4,5,6,7,8,9,10]
for i in lst:
if x>4:
a.append(i)
我们还可以在列表推导式中再添加一个条件。例如,在下面的代码中,我们存储了值大于4且可被2整除的所有元素。
>>> lst = [1,2,3,4,5,6,7,8,9,10]
>>> a = [x for x in lst if x > 4 if x%2 == 0]
>>> print(a)
[6, 8, 10]
上面的代码等效于:
for i in lst:
if i > 4:
if i % 2 == 0:
a.append(i)
我们还可以在列表推导式条件中添加else。
>>> lst = [1,2,3,4,5,6,7,8,9,10]
>>> a = [x if x > 4 else '小于4' for x in lst]
>>> print(a)
['小于4', '小于4', '小于4', '小于4', 5, 6, 7, 8, 9, 10]
上面的代码等效于:
for i in lst:
if i > 4:
a.append(i)
else:
a.append('小于4')
上面我们看到了列表推导式能够在一行中完成一项任务,而for循环需要在多行中完成。列表推导式简单、易于阅读、紧凑且比for循环更快。列表推导式在许多不同的情况下也是可靠的,您可以在各种情况下使用它。
领取专属 10元无门槛券
私享最新 技术干货