< 返回技术文档列表

初学者怎么使用Python

发布时间:2021-11-07 01:42:05⊙投诉举报

这篇文章主要讲解了“初学者怎么使用Python”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“初学者怎么使用Python”吧!

1. 使用列表时

列表允许存储各种数据类型的元素且不限制大小,尽管这种灵活性使列表成为收集数据的首选,但实际上仍有一些使用和不使用它的最佳实践情景。

在存储具有相同性质(数据类型和含义)的元素时,应该使用列表。Python不会通过编程来限制这一点,在列表中存储单个自然项让开发人员的工作更轻松。开发人员很容易预测将来列表会有哪些项,并确信地编写脚本。

思考下面的物品列表。这个列表并不包含单一性质的项目,开发人员无法确定该列表是否包含房屋部件、尺寸或其他东西,因此他应该分别处理不同的项目:

list_of_things = ['Door', 2,'Window', True, [2.3, 1.4])]

思考下面的水果列表和分数列表。从前两个项目中,你很容易推断出第一个列表会始终包含水果名字,而第二个列表始终包含分数值:

list_of_fruits = ['apple','orange', 'pear', 'cherry', 'banana'] list_of_scores = [80, 98, 50, 55, 100]

在存储具有不同含义或数据类型的项目时,使用元组更合适。元组不具备在不创建新对象的情况下,提供存储不受限项目的灵活性(因为元组是不可变的)。

2. 迭代连接字符串时

在Python中所有东西都是对象,包括可变和不可变对象。每当更新分配给对象的值时,不可变对象需创建新对象,而可变对象则不需要。

假设你想在一个字符串中生成整个字母表。因为字符串是不可变对象,所以每当使用“+”运算符连接字符串值时,就会得到一个新的对象。

one_line_alphabet = '' for letter_index in range(ord('a'), ord('z')):     one_line_alphabet +=chr(letter_index)

Join函数是连接字符串的首选方法。使用join函数可将计算时间缩短约3倍。在我做的一项测试中,迭代连接100万个字符串值耗时0.135秒,若使用join( )函数则只需0.044秒。

small_letters = [chr(i) for i inrange(ord('a'), ord('z')+1)] single_line_alphabet = ''.join(small_letters)

因此,需要连接字符串列表时请使用join函数。若使用join函数连接几个字符串,这并不会直观感受到性能的差异。若要连接几个字符串值,请使用.format而不是“+”运算符。例如:

name = 'John' surname = 'Doe' full_name = '{name} {surname}'.format(namename=name, surnamesurname=surname)

3. 读写文件时

若要使用Python读写文件,首先需要用内置的open函数打开文件。打开文件,读取或写入内容以及关闭文件。进行操作时,可能会出现一些问题,比如忘记关闭文件和异常处理失败。

操作完成后,若忘记关闭文件会导致后续问题。比如,如果在写入文件后忘记关闭该文件,那么写入操作将不会保存至文件中,并且在文件仍然保持打开状态时,你将保留在计算机中分配的资源。如果在处理文件时,没有手动处理异常和错误,那么文件将保持打开的状态。

f = open(file='file.txt', mode='r') lines = f.readlines() ... f.close()

建议在打开文件时使用with关键字。with是一个上下文管理器,它能封装代码并能确保自动处理异常。比如,当你读写文件时,with-body中可能出现的任何故障,都能自动处理异常,并且始终保持该文件关闭。

with open('file.txt') as f:     read_data = f.read()     ...

如果跳过with时,你需要自己处理一切,关闭文件和异常处理都得亲自处理。with会让你的生活更轻松,让情况得以控制。

4. 跳过生成器时

在许多情景中,你需要生成一个值列表,稍后将在脚本中使用这些值。比如,你需要为前100个数字生成所有3个数字的组合。

combinations = [] value = 100 for i in range(value):     for j in range(value):         for k in range(value):             combinations.append((i, j,k))

当执行的命令完成时,列表组合将包含1M元组,每个元组有3个整型值。这些值将保存在内存中,直到被删除。使用sys模块中的getobjectsize函数检查对象大小,结果为8.29MB。

不再使用列表存储值并将它们全部保存至内存,可以创建一个生成器,每当你使用它时,将生成1个组合。这能减少内存消耗并提高运行速度。

defgenerate_combinations_of_three(value):     for i in range(value):         for j in range(value):             for k in range(value):                 yield (i, j, k)gen =generate_combinations_of_three(100)next(gen) # yields (0, 0, 0) next(gen) # yileds (0, 0, 1) ...

所以,尽可能多地使用生成器。时刻牢记内存容量是有限的,并尽可能优化内存使用。请使用生成器,特别是在开发可伸缩的解决方案时。

5. 使用推导式时

有一些程序员,他任何用Python编写代码都遵循Python之禅(The Zen of Python)的准则。如果是使用Python的新手,可能会倾向于夸大Python之禅的某些观点,而在其他方面避重就轻。

这一点在逐渐了解推导式时最容易注意到&mdash;&mdash;你倾向于翻译推导式中的“每一个”循环。假设你有一个三维的数字矩阵,你很可能会想将其平面化。

matrix = [[[ 1, 2, 3 ],            [ 4, 5, 6 ],            [ 7, 8, 9 ]],           [[ 10, 20, 30 ],            [ 40, 50, 60 ],            [ 70, 80, 90 ]]]

使用列表推导式,平面化过程如下:

flatten_list = [x for sub_matrix inmatrix for row in sub_matrix for                     x in row]

使用循环,平面化过程如下:

flatten_list = [] for sub_matrix in matrix:     for row in sub_matrix:         for x in row:             flatten_list.append(x)

感谢各位的阅读,以上就是“初学者怎么使用Python”的内容了,经过本文的学习后,相信大家对初学者怎么使用Python这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是血鸟云,小编将为大家推送更多相关知识点的文章,欢迎关注!


/template/Home/Zkeys/PC/Static