Python初学者必学的20个重要技巧

开发 后端
作为一名数据科学家,笔者每天都在使用Python,这是笔者工作的一个重要部分。在这个过程中,笔者学会了一些惊人的技巧。

本文转载自公众号“读芯术”(ID:AI_Discovery)。

Python是世界上使用最广泛的编程语言之一,原因有很多:易理解、用途非常广泛、包含了大量的模块和库等等。其中,简洁和较高的可读性使Python在所有软件中非常突出。

作为一名数据科学家,笔者每天都在使用Python,这是笔者工作的一个重要部分。在这个过程中,笔者学会了一些惊人的技巧。

[[340836]]

1. 交换价值

数字交换通常涉及存储在临时变量中的值。然而,我们可以通过使用Python技巧中的一行代码,不需要使用瞬变变量就可以实现这一点。

  1. """valueswapping""" 
  2.            a, b=5, 10 
  3.            print(a, b)           a, bb= b, a           print(a, b)           output           10, 5 

2. 列表中所有项的一个字符串

必须对一个字符串列表进行卷积时,可以通过for循环来更新每一项以此连续不断地执行此操作。然而这样做很麻烦,特别是在列表很长的情况下。在Python中,字符串是不可变的。因此,在每两个拼接中,左字符串和右字符串都应该被复制成一个新的字符串。

如下所示,使用join()函数是一种更为简洁的解决方法:

  1. p = ["Python", "is", "a","popular", "language"] 
  2. print(" ".join(p))output 
  3. Python is a popular language 

3. 列表中最常见的元素

确定列表中最经常出现的值。如果不同的项目以相同的方式出现,则打印其中的一个。创建列表集以删除冗余值。因此在集合中能找到每一项的最大事件数,然后再考虑最大的。

  1. list1 = [0, 1, 2, 3, 3, 2, 3, 1, 4, 5, 4] 
  2. print(max(set(list1), key = list1.count))output 

4. 测试两个字符串是否为相同字母异序词

  1. defanagram(string_1,string_2):     
  2.                       """Test if the stringsare anagrams.     
  3.                       string_1: string     
  4.                       string_2: string     
  5.                       returns: boolean     
  6.                       """ 

解决上述问题,从而弄清楚两个字符串是否是相同字母异序词。给定两个字符串string_1 和string_2,测试这两个字符串是否互为相同字母异序词。

  1. from collections importCounter 
  2.            defanagram(string_1,string_2):                    returnCounter(string_1) ==Counter(string_2)           anagram('pqrs','rqsp') 
  3.            True 
  4.            anagram('pqrs','rqqs') 
  5.            False 

[[340837]]

图源:unsplash

5. 逆转字符串

切片是Python中的一种方便技巧,它还可以用于逆转字符串中项的顺序。

  1. # with slicing 
  2.        str ="PQRST" 
  3.        reverse_str = str[::-1] 
  4.        print(reverse_str)       Output       TSRQP 

6. 反转列表

使用这种方法创建列表的副本,而且列表没有按顺序排序。要创建一个副本,需要更多的空间来容纳所有现有的元素。

  1. # using slicing approach 
  2.         defReverse(lst):         lstlst1 = lst[::-1] 
  3.          return lst1 
  4.                  lst = [5, 6, 7, 8, 9, 10] 
  5.         print(Reverse(lst)) 
  6.         output 
  7.         [10, 9, 8, 7, 6, 5] 

7. 转置矩阵

转置矩阵意味着将列变换为行,反之亦然。使用Python,可以通过以下代码与zip函数结合,并使用*工具解压缩矩阵的转置列表。

  1. mat=[(5,6,7),(8,9,10),(11,12,13),(14,15,16)] 
  2.                                              for row in mat: 
  3.                                               print(row) 
  4.                                              print("\n") 
  5.                                              t_mat=zip(*mat) 
  6.                                              for row in t_mat: 
  7.                                               print(row) 
  8.                                              output 
  9.                                              (5, 6, 7) 
  10.                                              (8, 9, 10) 
  11.                                              (11, 12, 13) 
  12.                                              (14, 15, 16) 
  13.                                              (5, 8, 11, 14) 
  14.                                              (6, 9, 12, 15) 
  15.                                              (7, 10, 13, 16) 

8. 链式比较

在编程中,测试两个以上的条件是很正常的。假设需要测试以下内容:

  1. < q< r 

更聪明的做法确实是在Python中通过链式来编写。任务链表示如下:

  1. if p< q< r: 
  2.     {.....} 

返回布尔值来比较判断正确与否。示例如下:

  1. # chaining comparison 
  2.           a =3 
  3.           print(1< a<10
  4.           print(5< a<15
  5.           print(a <7< a*7<49
  6.           print(8> a<=6) 
  7.           print(3== a>2) 
  8.           output 
  9.           True 
  10.           False 
  11.           True 
  12.           True 
  13.           True 

9. ‘get’字典

下面是访问Python字典中键值的传统方法:

  1. dict = {"P":1, "Q":2} 
  2. print(dict["P"]) 
  3. print(dict["R"]) 

代码的第三行会产生一个关键错误:

  1. Traceback (most recent call last): 
  2.   File ".\dict.py", line 3, in 
  3.     print (dict["R"]) 
  4. KeyError: 'R' 

为了防止这种情况的出现,可以使用get()函数。当在字典中可用时,该技巧可以提供特定键的值。若不可用,则不会返回任何值(如果 get()只使用了一个参数)。

  1. dict = {"P":1, "Q":2} 
  2.        print(dict.get("P")) 
  3.        print(dict.get("R")) 
  4.        print(dict.get("R","Unavailable! ")) 
  5.        output       1 
  6.        None 
  7.        Unavailable! 

10. 按值给字典排序

排序在日常编程中一直是很有用的。Python中的字典在许多应用程序中被广泛使用,范围从竞争领域到开发人员领域。构造一本字典,并按字母顺序显示所有键,按值列出按字母顺序排序的键和值。

  1. defdict():  
  2.        keyval ={}       # Initializing the value       keyval[3] =48 
  3.        keyval[2] =6 
  4.        keyval[5] =10 
  5.        keyval[1] =22 
  6.        keyval[6] =15 
  7.        keyval[4] =245 
  8.        print ("Task3:-\nKeys and Values sorted", 
  9.        "in alphabetical order by thevalue") 
  10.        # Remember this would arrange inaphabetical sequence       # Convert it to float to mathematicalpurposes       print(sorted(keyval.elements(), key = 
  11.           lambda k_val:(k_val[1], k_val[0]))) 
  12.        defmain():        dict()                  if __name__=="__main__":  
  13.         main()       output 
  14.        [(2, 6), (5, 10), (6, 15), (1, 22), (3, 48), (4, 245)] 

Python初学者必学的20个重要技巧

图源:unsplash

11. 列表推导

要从不同的迭代中构造新的列表,需要使用列表推导。由于列表推导式产生列表,因此它们包含表达式的括号,该表达式将被执行到每个元素。推导列表更简单,因为Python解释器旨在检测循环中的循环模式。

  1. # Multiplying each item in the list with 3 
  2.            list1 = [2,4,6,8] 
  3.            list2 = [3*p for p in list1] 
  4.            print(list2) 
  5.            [6,12,18,24] 

12. 执行部分计划所花费的时间

这个重点展示了计算程序或程序的一部分执行所花费的时间。计算时间有助于优化Python脚本,使其执行得更好。

  1. import time 
  2.       initial_Time = time.time() 
  3.       # Program to test follows      x, y=5,6 
  4.       z = x+ y      # Program to test ending      ending_Time = time.time() 
  5.       Time_lapsed_in_Micro_sec= (ending_Time- initial_Time)*(10**6) 
  6.       print(" Timelapsed in micro_seconds: {0} ms").format(Time_lapsed_in_Micro_sec) 

13. 合并字典

这是Python中的一个重要技巧:使用一个表达式来合并两个字典并将结果存储在第三个字典中。单个表达式是 **,这不会影响其他两个字典。**表示参数是一个字典。使用**是一种快捷方式,这样就可以通过使用字典直接向函数传递多个参数。

使用这个函数,首先将第一个字典的所有元素传递给第三个字典,然后将第二个字典传递给第三个字典。这将替换第一个字典的重复键

  1. dic1 = {'men': 6, 'boy': 5} 
  2.        dic2 = {'boy': 3, 'girl': 5} 
  3.        merged_dic = {**dic1, **dic2} 
  4.        print(merged_dic) 
  5.        Output 
  6.        {'men': 6, 'boy': 3, 'girl': 5} 

14. 数字化

下面是使用了 map()函数、列表推导以及一种更简单的数字化方法编写的代码:

  1. number =2468 
  2.       # with map 
  3.       digit_list =list(map(int, str(number))) 
  4.       print(digit_list)      [2, 4, 6, 8] 
  5.       # with list comprehension 
  6.       digit_list = [int(a) for a instr(number)] 
  7.       print(digit_list)      [2, 4, 6, 8] 
  8.       # Even simpler approach      digit_list =list(str(number)) 
  9.       print(digit_list)      [2, 4, 6, 8] 

15. 测试独特性

一些列表操作要求测试列表中的所有项是否完全不同。尝试在列表中执行集合操作时,通常会发生这种情况,这个特殊的实用程序在这时必不可少。

  1. defuniq(list): 
  2.               iflen(list)==len(set(list)):                   print("totalitems are unique") 
  3.               else: 
  4.                    print("Listincludes duplicate item") 
  5.            uniq([0,2,4,6]) 
  6.            total items are unique           uniq([1,3,3,5]) 
  7.            List includesduplicate item 

16. 使用枚举

在循环中使用枚举数可以快速查找索引:

  1. sample_list = [4, 5, 6] 
  2.            for j, item inenumerate(sample_list): 
  3.              print(j, ': ', item) 
  4.            Output 
  5.            0 : 4 
  6.            1 : 5 
  7.            2 : 6 

17. 在一行中计算任意数的阶乘

此技巧可以帮助你在一行中找到一个给定数的阶乘:

  1. import functools 
  2.          fact = (lambda i: functools.reduce(int.__mul__, range(1,i+1),1)(4) 
  3.          print(fact) 
  4.          Output         24 

18. 返回几个函数的元素

许多计算机语言都不提供这个功能。但是对于Python,函数会产生几个元素。查看下面的实例,了解它是如何执行的:

  1. # function returning several elements. 
  2.          defa(): 
  3.              return5, 6, 7, 8 
  4.          # Calling the abovefunction. 
  5.          w, x, y, z=a() 
  6.          print(w, x, y, z) 
  7.          Output 
  8.          5678 

19. 加入一个真正的Python切换大小写语句

下面是使用字典复制大小写转换结构的脚本:

  1. defaswitch(a): 
  2.              returnaswitch._system_dic.get(a, None) 
  3.            aswitch._system_dic = {'mangoes': 4, 'apples': 6, 'oranges': 8} 
  4.            print(aswitch('default')) 
  5.            print(aswitch('oranges')) 
  6.            Output           None 
  7.            8 

20. 使用splat操作符解包函数参数

splat操作符提供了一种解包参数列表的有效方法:

  1. deftest(a, b, c): 
  2.          print(p, q, r) 
  3.        test_Dic = {'a': 4, 'b': 5, 'c': 6} 
  4.        test_List = [10, 11, 12]       test(*test_Dic) 
  5.        test(**test_Dic) 
  6.        test(*test_List) 
  7.        #1-> p q r 
  8.        #2-> 4 5 6 
  9.        #3-> 10 11 12 

掌握这些小技巧,快速有效地完成Python任务。

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2011-07-26 16:08:40

iPhone 应用程序

2011-08-10 19:16:50

Objective-C变量

2024-03-11 18:17:18

Python字符串分隔符

2020-12-07 10:55:16

编程学习技术

2022-07-22 15:55:32

Python代码语言

2010-09-01 09:23:53

DIV CSS

2010-03-10 17:09:26

Python语言

2017-10-30 10:12:27

安卓开发初学者技巧

2020-03-02 14:20:46

PythonGitHub编程语言

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2014-01-03 14:09:57

Git学习

2011-04-12 10:13:24

2020-09-06 22:04:48

Python运算符开发

2010-08-24 08:28:19

JavaScript

2020-08-04 08:42:10

Python开发工具

2014-03-12 10:11:57

Python设计模式

2020-03-01 14:57:47

Python编程函数

2011-07-04 14:14:54

java

2009-09-28 09:45:00

CCNA学习经验CCNA
点赞
收藏

51CTO技术栈公众号