Python列表解析式到底该怎么用

本文详细介绍了Python列表解析式,包括其优势、创建方式、循环与map对象的比较,以及高级用法如条件逻辑、集合和字典解析式。文章强调了列表解析式的高效性和可读性,并探讨了何时不应使用解析式,同时提供了使用生成器处理大型数据集的建议。
摘要由CSDN通过智能技术生成

Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法。在本文中,将会展示列表解析式

(List Comprehension)。我们将讨论如何使用它?什么时候该或不该使用它?

在这里插入图片描述

列表解析式的优势

•比循环更节省时间和空间。

•需要更少的代码行。

•可将迭代语句转换为公式。

如何在 Python 中创建列表

列表解析式是一种基于现有列表创建列表的语法结构。让我们来看看创建列表的不同实现

循环

循环是创建列表的传统方式。不管你使用什么样的循环。要以这种方式创建列表,您应该:

1.实例化一个空列表。

2.循环遍历一个可迭代的(如 range)的元素。

3.将每个元素附加到列表的末尾。

Python学习交流Q群:906715085####
numbers = []
for number in range(10):
    numbers.append(number)
    
print(numbers)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

在此示例中,您实例化了一个空列表 numbers。然后使用 for 循环迭代 range(10) 并使用 append() 方法将每个数字附加到列表的末尾。

map() 对象

map() 是创建列表的另一种方法。您需要向 map() 传递一个函数和一个可迭代对象,之后它会创建一个对象。该对象包含使用指定函数执行每个迭代元素所获得的输出。

例如,我们将呈现在某些产品的价格中增加增值税的任务。

Python学习交流Q群:906715085###
VAT_PERCENT = 0.1  # 10%


def add_vat(price):
    return price + (price * VAT_PERCENT)
    

prices = [10.03, 8.6, 32.85, 41.5, 22.64]
grand_prices = map(add_vat, prices)
print(grand_prices)
grand_prices = list(grand_prices)
print(grand_prices)

您已经构建了 add_vat() 函数并创建了 prices 可迭代对象。您将这两个参数都传递给 map() 并收集生成的 map 对象

grand_prices,或者您可以使用 list() 轻松地将其转换为列表。

输出:

<map object at 0x7f18721e7400>  # map(add_vat, prices)
[11.03, 9.46, 36.14, 45.65, 24.9]  # list(grand_prices)

列表解析式

现在,让我们看一下列表解析式方法!这确实是 Python 风格,并且是创建列表的更好方法。为了弄清楚这种方法有多强大,我们

用一个单行代码来重写那个循环示例。

numbers = [number for number in range(10)]
print(numbers)

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

正如您所见,这是一种不可思议的方法!列表解析式看起来足够可读,您不需要编写更多代码,而只需一行。

为了更好地理解列表,请查看以下语法格式:

new_list = [expression for member in iterable]

在这里插入图片描述

哪种方法更有效

好的,我们已经学习了如何使用循环、map() 和列表解析式来创建列表,在您的脑海中可能会提出“哪种方法更有效”的问题。我们

来分析一下吧!

Python学习交流Q群:906715085####
import random
import timeit

```python



VAT_PERCENT = 0.1
PRICES = [random.randrange(100) for x in range(100000)]


def add_vat(price):
    return price + (price * VAT_PERCENT)
    

def get_grand_prices_with_map():
    return list(map(add_vat, PRICES))
    

def get_grand_prices_with_comprehension():
    return [add_vat(price) for price in PRICES]
    

def get_grand_prices_with_loop():
    grand_prices = []
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值