paint-brush
制定较好的 Python 编号的 11 个诀窍和巧门 經過@pragativerma
2,264 讀數
2,264 讀數

编写更好的 Python 代码的 11 个技巧和窍门

Pragati Verma8m2022/08/16
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

Python 通常使用“for”循环来迭代可迭代对象。但是通过使用 `enumerate() 而不是 'for' 循环,有一种更简单、更 Pythonic 的方式来做到这一点。列表理解而不是原始 for 循环是一种基于现有列表创建列表的方法。它可用于对已排序列表或序列(元组、集合、冻结集)或集合(冻结集)中的元素进行排序。列表推导式的语法如下所示:'HackerNoon'

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 编写更好的 Python 代码的 11 个技巧和窍门
Pragati Verma HackerNoon profile picture


此地有 11 个温馨提示和实用技巧,能能帮住你撰写更快的 Python 代码怎么用并称为更快的流程员:


1. 使用 enumerate 或range(len(x))进行迭代

在 Python 中,我们通常使用for循环来迭代可迭代对象。 Python 中的for循环使用基于集合的迭代,即 Python 在每次迭代时将可迭代的下一项分配给循环变量。 for循环的通常用例如下:


 values = ["a", "b", "c"] for value in values: print(value) # a # b # c


目前,如果不光值囿于,您还想彩印指数,您还可以这种做:


 index = 0 for value in values: print(index, value) index += 1 # 0 a # 1 b # 2 c


或另一种常见的方法是使用range(len(x))


 for index in range(len(values)): value = values[index] print(index, value) # 0 a # 1 b # 2 c


然而,使用enumerate()有一种更简单、更 Pythonic 的方式来迭代可迭代对象。它在for循环中的使用方式与通常使用的方式几乎相同,但不是将可迭代对象直接in for循环中,或者将其用作range(len(values)) ,而是将其放在里面enumerate()的括号如下所示:


 for count, value in enumerate(values): print(count, value) # 0 a # 1 b # 2 c


我们还可以为enumerate()定义一个start参数,如下所示:


 for count, value in enumerate(values, start=1): print(count, value) # 1 a # 2 b # 3 c


enumerate()函数返回两个变量:

  • 当前迭代的计数
  • 当前迭代中项目的值


就像for循环中的循环变量一样,循环变量可以任意命名,例如,我们可以调用 then indexvalue ,它们仍然可以工作。 enumerate()for循环更有效,因为它使您免于记住访问循环内的值并正确使用它,然后还记得推进循环变量的值,这一切都由 Python 自动处理.


2. 使用列表推导而不是原始的 for 循环

汇总推论是种源于共有汇总的定义建立汇总的更简约和清雅的办法。什么和什么而是行代碼怎么用,由涉及到在次次多目标优化中抄袭强制执行的抒发式的括号成分。如此,什么和什么比配置更节省了期限和环境空间,并在单行代碼怎么用转乘换多目标优化语句。


下拉列表求出的普遍句型方式下图:


 newList = [ expression(element) for element in oldList if condition ]


这些是源代码中数据库表达的范例:


 # Using list comprehension to iterate through loop List = [character for character in 'HackerNoon'] # Displaying list print(List) # Output # ['H', 'a', 'c', 'k', 'e', 'r', 'N', 'o', 'o', 'n']


3. 使用sorted()对复杂的迭代进行排序

Python sorted()函数按特定顺序(升序或降序)对可迭代对象的元素进行排序,并将它们作为排序列表返回。它可用于对序列(字符串、元组、列表)或集合(集合、字典、冻结集)或任何其他迭代器进行排序。


sorted()函数的语法如下:


 sorted(iterable, key=None, reverse=False)


sorted()函数最多接受三个参数:

  • 可迭代:它可以是任何迭代器
  • key:它是一个可选参数,用作排序比较的键。
  • reverse:它也是一个可选参数,用于指定反向排序列表作为输出


4. 使用集合存储唯一值

Python Set 将多个值的单独的内容存放到表中。因为,它需用于查验列表页中的唯一的值。比如:


 list_inp = [100, 75, 100, 20, 75, 12, 75, 25] set_res = set(list_inp) print("The unique elements of the input list using set():\n") list_res = (list(set_res)) for item in list_res: print(item)


因此中系统软件的输出的理应是如此的:


 The unique elements of the input list using set(): 25 75 100 20 12


5. 使用生成器节省内存

转换器的常见职能是按需鉴定事物。它与文件列表推证的英语语法极为相像,大家运行括号代用方括号。


让你们要考虑到一些举例,当小编要打印纸所有某种有偶数的平:


 myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print("The given list is:", myList) mygen = (element ** 2 for element in myList if element % 2 == 0) print("Elements obtained from the generator are:") for ele in mygen: print(ele)


上述所说代碼的输出的详细随时:


 The given list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Elements obtained from the generator are: 4 16 36 64 100


就已经 说过这句话的英语的语法与表单推证是相仿,您需要想清楚它与表单或汇总推证有没有什么不一样的。与表单或汇总推证不一样的,提取器推证不初使化某些对方。之所以,您会用到提取器谅解是什么而不算表单或汇总谅解是什么来降低子程序的內存各种需求。


6. 使用.get().setdefault()在字典中定义默认值


.setdefault()方法允许设置dict[key]=default如果 key 不在 dict 中。


.setdefault()的语法如下所示:


 dict.setdefault(key, default=None)


这是一个示例代码片段,用于了解如何使用.setdefault()


 a_dictionary = {"a": 1, "b": 2, "d": 4} a_dictionary.setdefault("c", 3) print(a_dictionary)


以上所述代码怎么用的输入下述如下:


 {'a': 1, 'b': 2, 'd': 4, 'c': 3}


同样的事情也可以通过使用.get()方法通过传递键的默认值来实现,如下所示:


 a_dictionary = {"a": 1, "b": 2, "d": 4} print(a_dictionary.get("c", 3)) print(a_dictionary)


下列码的所在下面的下图:


 3 {'a': 1, 'b': 2, 'd': 4}


7. 使用collections.Counter计算可散列对象

Collections 版块认可高性价比参数贮罐数值报告类别(也可以内部自带类别文件列表、字典和元组),并带有所有也有用的数值报告成分,广泛用于在4g内存中储存方式信息内容。


记数器也是个储罐,用以追综增加等于值的多次。它也可以于变现与其余語言用到包或多集数剧结构的来变现的不同图像匹配。


导入集合使集合中的内容可用作:

 import collections


主要是因为各位只开始打算在使用计数器器,各位行简短地这种做:


 from collections import Counter


它可能按途径途径动用:


 import collections c = collections.Counter('abcdaab') for letter in 'abcde': print '%s : %d' % (letter, c[letter])


这些源代码的读取如下所述图示:


 a : 3 b : 2 c : 1 d : 1 e : 0


8. 使用 f-Strings 格式化字符串 (Python 3.6+)

f-strings,也称是“论文恢复出厂设置空格符串文本框”,不是种新的、更富 Python 调性的空格符串论文恢复出厂设置原则,受 Python 3.6+ 可以。鸟卵是 Python 中本身快点、更易读、更简洁个性且容易没有响应的空格符串论文恢复出厂设置原则。


正如名称“f-string”所说,它们是字符串文字,以 f 开头,花括号包含表达式,这些表达式将在运行时替换为它们的值,然后使用__format__协议进行格式化。


f-strings 是可以按如下图所示方式英文选择:


 name = "Eric" age = 74 print(f"Hello, {name}. You are {age}.") # 'Hello, Eric. You are 74.'


9. 使用.join()连接字符串

在 Python 中,我们可以使用.join()方法将字符串列表连接成单个字符串。此方法的常用语法如下所示:


 'String to insert'.join([List of strings])


它可以以多种方式使用——如果你使用空字符串““ ,[字符串列表]只是简单地连接,如果你使用逗号,则会创建一个逗号分隔的字符串。当使用换行符\n时,每个字符串后都会附加一个换行符。请参见下面的示例:


 l = ['aaa', 'bbb', 'ccc'] s = ''.join(l) print(s) # aaabbbccc s = ','.join(l) print(s) # aaa,bbb,ccc s = '-'.join(l) print(s) # aaa-bbb-ccc s = '\n'.join(l) print(s) # aaa # bbb # ccc


10. 用{**d1, **d2}合并字典(Python 3.5+)

合并字典的最简单方法是使用解包运算符 ( ** )。此方法的语法如下所示:


 {**dict1, **dict2, **dict3}


这才是一款 更优质地的理解此做法的范本:


 d1 = {'k1': 1, 'k2': 2} d2 = {'k3': 3, 'k4': 4} print({**d1, **d2}) # {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}


11. 使用if x in list简化 if 语句

假定你们还1个含有色泽、绿和粉色色彩三原色的汇总。在你们的代码怎么用的其它方面,你们还1个含有色泽的新变量值,这些 c = red。接着你们会瞅瞅这要不要是你们的主耍色泽一个。此外,你们可以会共性汇总中的没个内容通过排查,下面的如图是:


 colors = ["red", "green", "blue"] c = "red" # cumbersome and error-prone if c == "red" or c == "green" or c == "blue": print("is main color")


另一方面,这有可能会显得十分时长,另一方面小编很简易 犯出错误,这类如果小编你不在里对红白色有写错字。仅使用的传达式 if x in list 更简单且更可出:


 colors = ["red", "green", "blue"] c = "red" # better: if c in colors: print("is main color")


结论

Python 也是种广泛的便用的小程序编写文字,借助便用综上所述报错和小技巧,您不错被选为一些更优质的 Python 小php程序员。


我渴望这篇原创文章对您有所不为益处。再阅读文章!
바카라사이트 바카라사이트 온라인바카라