你的代码“balance”怎么样?找到简洁性和可读性的平衡点( 二 )

使用namedtuple模块,可以用更简洁的代码编写轻量级数据结构 。当然,请注意,自定义类提供了更多可以操作的功能 。但如果只是为了存储和检索数据而创建一个数据结构,完全可以考虑使用namedtuple模块 。

你的代码“balance”怎么样?找到简洁性和可读性的平衡点

文章插图
图源:unsplash

你的代码“balance”怎么样?找到简洁性和可读性的平衡点

文章插图
 
4.使用enumerate()和zip()进行迭代编码的一个关键原则是精简 。当处理一系列数据(如数字列表)时,通常需要对列表中的每个数字执行相同的操作 。为了避免重复相同的代码,可以使用for循环loop来运行整个列表的迭代 。
当迭代一个列表或任何序列时,有时还需要知道该项在序列中的位置 。下面几种方法可以做到这一点 。
>>># Create a list of students based ontheir arrival sequence>>> students = ['John', 'Aaron', 'Jennifer', 'Ashley']>>>>>># Lengthy way>>>for index inrange(len(students)):...student = students[index]...print(f"Arrival # {index+1}: {student}")...Arrival# 1: JohnArrival# 2: AaronArrival# 3: JenniferArrival# 4: Ashley>>>>>># Concise way>>>for index, student inenumerate(students, 1):...print(f"Arrival # {index}: {student}")...Arrival# 1: JohnArrival# 2: AaronArrival# 3: JenniferArrival# 4: Ashley通过使用内置函数enumerate(),可以轻松访问序列中的索引和元素,这比第一次迭代更简洁 。更重要的是,它可以设置开始计数的数字 。在上面的示例中设置为了1 。
除了enumerate()函数,zip()函数在迭代中也颇为有用 。此函数可以从多个迭代中创建元组,而无需特意为这些迭代创建复合迭代 。
>>># Create two lists for zip(), with oneto one match>>> names = ['John', 'Danny', 'Jennifer']>>> scores = [95, 99, 100]>>>>>># Lengthy way>>>for index inrange(len(names)):...name, score = names[index], scores[index]...print(f"Name: {name}; Score: {score}")...Name: John; Score: 95Name: Danny; Score: 99Name: Jennifer; Score: 100>>>>>># Concise way>>>for name, score inzip(names, scores):...print(f"Name: {name}; Score: {score}")...Name: John; Score: 95Name: Danny; Score: 99Name: Jennifer; Score: 100基本上,zip()函数所做的就是从迭代中获取每个元素,以便在每次迭代中形成一个有顺序的元组 。这样一来代码会更简洁,可读性也更高 。
你的代码“balance”怎么样?找到简洁性和可读性的平衡点

文章插图
【你的代码“balance”怎么样?找到简洁性和可读性的平衡点】图源:unsplash

你的代码“balance”怎么样?找到简洁性和可读性的平衡点

文章插图
 
5.f字符串格式化字符串太基础了,我们基本上在哪都会用它 。字符串的一个基本应用是与某些格式一并使用 。有几种格式化字符串的方法,笔者想介绍的是f字符串,这个方法非常简单 。
f字符串是使用字母f(或F)作为字符串文本的前缀插入的字符串文本 。为了编写简洁的代码,下面两个用例首选f字符串:
· 显示变量 。最基本的用法是显示一些变量的值,以便在开发过程中进行调试 。如果使用传统的format()方法,代码会偏长 。
>>># Construct a list for formatting/debugging>>> prime_numbers = [2, 3, 5, 7, 11]>>>>>># Show the list using format>>>print("Prime Numbers: {}".format(prime_numbers))PrimeNumbers: [2, 3, 5, 7, 11]>>>>>># Show the list using f-string>>>print(f"Prime Numbers: {prime_numbers}")PrimeNumbers: [2, 3, 5, 7, 11]· 加入变量/连接字符串 。f字符串不是使用+和字符串的join()方法,而是非常直接地用于字符串连接,并且它们具有最高的可读性 。在实际操作中可用于构造文件路径,如下所示:
>>># The folder and extension>>> folder ='./usr/images'>>> ext ='.jpg'>>>>>># File name is computed from this list>>> names = [10, 11, 12]>>>>>># Construct File paths>>># Use + for concatenation>>> paths0 = [folder +'/'+str(x) + ext for x in names]>>>>>># Use join()>>> paths1 = [''.join([folder, '/', str(x), ext]) for x in names]>>>>>># Use f strings>>> paths2 = [f"{folder}/{x}{ext}"for x in names]
你的代码“balance”怎么样?找到简洁性和可读性的平衡点


推荐阅读