越早知道越好的五个Python特征
副问题[/!--empirenews.page--]
Python可以说是这十年来鼓起的编程说话,而且被证明是一种很是强盛的说话。我用Python从交互式舆图到区块链构建了许多应用措施。Python有许多特征,初学者很难一开始就把握全部的特征。 纵然您是一个从其他说话(如C或MATLAB)转换过来的措施员,用更高抽象级此外Python编写代码绝对是另一种体验。我但愿早些时辰就知道一些Python特征,并重点先容了个中五个最重要的特征。 1.列表领略-压缩代码许多人会提到lambda、map和filter是每个初学者都应该进修的Python“能力”。固然我以为它们是我们应该留意的成果,但我发明它们大大都时辰不是出格有效,由于它们缺乏机动性。 Lambda是在一行中编写一个一次性行使的函数的要领。假如函数被多次挪用,机能会受到影响。另一方面,map将一个函数应用于列表中的全部元素,而filter则获取满意用户界说前提的荟萃中的元素子集。 add_func = lambda z: z ** 2 is_odd = lambda z: z%2 == 1 multiply = lambda x,y: x*y aList = list(range(10)) print(aList) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 列表领略是一种简捷而机动的要领,它可以用机动的表达式和前提从其他列表建设列表。它是由一个方括号结构的,个中的表达式或函数仅在元素满意某种前提时才应用于列表中的每个元素。它还可以嵌套来处理赏罚嵌套列表,而且比行使map和filter机动得多。 # Syntax of list comprehension [ expression(x) for x in aList if optional_condition(x) ] print(list(map(add_func, aList))) print([x ** 2 for x in aList]) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(list(filter(is_odd, aList))) print([x for x in aList if x%2 == 1]) # [1, 3, 5, 7, 9] # [1, 3, 5, 7, 9]2.列表操纵-轮回列表 Python应承反向索引,个中列表[-1]==列表[len(列表)-1]。因此,我们可以通过挪用aList[-2]等要领获取列表中的最后一个元素。 我们还可以行使syntax aList[start:end:step]对列表举办切片,个中包括开始元素,但不包括竣事元素。 我们还可以行使语法列表对列表举办切片,个中包括起始元素,但不包括竣事元素。因此,挪用aList[2:5]给出了[2,3,4]。我们还可以通过挪用aList[::-1]来反转列表,我发明这种技能很是优雅。 列表也可以解压成单独的元素,可能行使星号将元素和子列表殽杂。 a, b, c, d = aList[0:4] print(f'a = {a}, b = {b}, c = {c}, d = {d}') # a = 0, b = 1, c = 2, d = 3 a, *b, c, d = aList print(f'a = {a}, b = {b}, c = {c}, d = {d}') # a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 93.压缩和Enumeratefor轮回 Zip函数建设一个迭代器,用于聚合来自多个列表的元素。它应承在for轮回中并行遍历列表并并行排序。可以行使星号解压缩它。 numList = [0, 1, 2] engList = ['zero', 'one', 'two'] espList = ['cero', 'uno', 'dos'] print(list(zip(numList, engList, espList))) # [(0, 'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')] for num, eng, esp in zip(numList, engList, espList): print(f'{num} is {eng} in English and {esp} in Spanish.') # 0 is zero in English and cero in Spanish. # 1 is one in English and uno in Spanish. # 2 is two in English and dos in Spanish. Eng = list(zip(engList, espList, numList)) Eng.sort() # sort by engList a, b, c = zip(*Eng) print(a) print(b) print(c) # ('one', 'two', 'zero') # ('uno', 'dos', 'cero') # (1, 2, 0) Enumerate一开始也许看起来有点吓人,但在很多场景中很是利便。它是一个常常在for轮回中行使的自动计数器,因此在for轮回中不再必要通过counter = 0和counter += 1来建设和初始化计数器变量。在结构for轮回时,Enumerate和zip是两个最强盛的器材。 upperCase = ['A', 'B', 'C', 'D', 'E', 'F'] lowerCase = ['a', 'b', 'c', 'd', 'e', 'f'] for i, (upper, lower) in enumerate(zip(upperCase, lowerCase), 1): print(f'{i}: {upper} and {lower}.') # 1: A and a. # 2: B and b. # 3: C and c. # 4: D and d. # 5: E and e. # 6: F and f.4.天生器-内存服从 当我们规划计较大量功效,但但愿停止同时分派全部功效所需的内存时,将行使天生器。换句话说,它们动态地天生值,而且不将早年的值存储在内存中,因此我们只能对它们举办一次迭代。 它们凡是用于读取大文件或行使要害字yield天生无穷序列。我常常发明它在我的大大都数据科学项目中很有效。 def gen(n): # an infinite sequence generator that generates integers >= n while True: yield n n += 1 G = gen(3) # starts at 3 print(next(G)) # 3 print(next(G)) # 4 print(next(G)) # 5 print(next(G)) # 65.假造情形-断绝 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |