十三个好用到起飞的Python技巧!

 Python 因其在各个领域的实用性、与 Java、C 和 C++ 等其他编程语言相比的生产力以及与英语类似的命令而广受欢迎。

十年的七台河网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整七台河建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“七台河网站设计”,“七台河网站推广”以来,每个客户项目都认真落实执行。

假如你也是Python学习爱好者,那么今天讲述的13个技巧,真挺香!

列表

与列表相关的6个操作,介绍如下;

1. 将两个列表合并到一个字典中

假设我们在Python中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项目作为字典的键,另一个作为值。这是在用 Python 编写代码时经常遇到的一个非常常见的问题。

但是为了解决这个问题,我们需要考虑几个限制,比如两个列表的大小,两个列表中项目的类型,以及其中是否有重复的项目,尤其是我们将使用的项目 作为钥匙。我们可以通过使用像 zip 这样的内置函数来克服这个问题。

 
 
 
 
  1. keys_list = ['A', 'B', 'C'] 
  2. values_list = ['blue', 'red', 'bold'] 
  3.  
  4. # 有 3 种方法可以将这两个列表转换为字典 
  5. # 1.使用Python zip、dict函数 
  6. dict_method_1 = dict(zip(keys_list, values_list)) 
  7.  
  8. # 2. 使用带有字典推导式的 zip 函数 
  9. dict_method_2 = {key:value for key, value in zip(keys_list, values_list)} 
  10.  
  11. # 3.循环使用zip函数 
  12. items_tuples = zip(keys_list, values_list)  
  13. dict_method_3 = {}  
  14. for key, value in items_tuples:  
  15.     if key in dict_method_3:  
  16.         pass  
  17.     else:  
  18.         dict_method_3[key] = value 
  19.          
  20. print(dict_method_1) 
  21. print(dict_method_2) 
  22. print(dict_method_3) 

结果如下:

2.将两个或多个列表合并为一个列表

当我们有两个或更多列表时,我们希望将它们全部收集到一个大列表中,其中较小列表的所有第一项构成较大列表中的第一个列表。

例如,如果我有 4 个列表 [1,2,3]、['a','b','c']、['h','e','y'], 和[4,5,6],我们想为这四个列表创建一个新列表;它将是 [[1,'a','h',4], [2,'b','e',5], [3,'c','y',6]]。

 
 
 
 
  1. def merge(*args, missing_val = None): 
  2.     max_length = max([len(lst) for lst in args]) 
  3.     outList = [] 
  4.     for i in range(max_length): 
  5.         outList.append([args[k][i] if i < len(args[k]) else missing_val for k in range(len(args))]) 
  6.     return outList 
  7.  
  8. merge([1,2,3],['a','b','c'],['h','e','y'],[4,5,6]) 

结果如下:

3. 对字典列表进行排序

下一组日常列表任务是排序任务。根据列表中包含的项目的数据类型,我们将采用稍微不同的方式对它们进行排序。让我们首先从对字典列表进行排序开始。

 
 
 
 
  1. dicts_lists = [ 
  2.   { 
  3.     "Name": "James", 
  4.     "Age": 20, 
  5.   }, 
  6.   { 
  7.      "Name": "May", 
  8.      "Age": 14, 
  9.   }, 
  10.   { 
  11.     "Name": "Katy", 
  12.     "Age": 23, 
  13.   } 
  14.  
  15. # 方法一 
  16. dicts_lists.sort(key=lambda item: item.get("Age")) 
  17.  
  18. # 方法二 
  19. from operator import itemgetter 
  20. f = itemgetter('Name') 
  21. dicts_lists.sort(key=f) 

结果如下:

4. 对字符串列表进行排序

我们经常面临包含字符串的列表,我们需要按字母顺序、长度或我们想要或我们的应用程序需要的任何其他因素对这些列表进行排序。现在,我应该提到这些是对字符串列表进行排序的直接方法,但有时您可能需要实现排序算法来解决该问题。

 
 
 
 
  1. my_list = ["blue", "red", "green"] 
  2.  
  3. # 方法一 
  4. my_list.sort()  
  5. my_list = sorted(my_list, key=len)  
  6.  
  7. # 方法二 
  8. import locale 
  9. from functools import cmp_to_key 
  10. my_list = sorted(my_list, key=cmp_to_key(locale.strcoll))  

结果如下:

5. 根据另一个列表对列表进行排序

有时,我们可能想要/需要使用一个列表来对另一个列表进行排序。因此,我们将有一个数字列表(索引)和一个我想使用这些索引进行排序的列表。

 
 
 
 
  1. a = ['blue', 'green', 'orange', 'purple', 'yellow'] 
  2. b = [3, 2, 5, 4, 1] 
  3.  
  4. sortedList =  [val for (_, val) in sorted(zip(b, a), key=lambda x: x[0])] 
  5. print(sortedList) 

结果如下:

6. 将列表映射到字典

如果给定一个列表并将其映射到字典中。也就是说,我想将我的列表转换为带有数字键的字典,应该怎么做呢?

 
 
 
 
  1. mylist = ['blue', 'orange', 'green'] 
  2. #Map the list into a dict using the map, zip and dict functions 
  3. mapped_dict = dict(zip(itr, map(fn, itr))) 

字典

与字典相关的2个操作,介绍如下;

7. 合并两个或多个字典

假设我们有两个或多个字典,并且我们希望将它们全部合并为一个具有唯一键的字典。

 
 
 
 
  1. from collections import defaultdict 
  2.  
  3. def merge_dicts(*dicts): 
  4.     mdict = defaultdict(list) 
  5.     for dict in dicts: 
  6.     for key in dict: 
  7.         res[key].append(d[key]) 
  8.     return dict(mdict) 

8. 反转字典

一个非常常见的字典任务是如果我们有一个字典并且想要反转它的键和值。因此,键将成为值,而值将成为键。当我们这样做时,我们需要确保我没有重复的键,值可以重复,但键不能,并确保所有新键都是可散列的。

 
 
 
 
  1. my_dict = { 
  2.   "brand": "Ford", 
  3.   "model": "Mustang", 
  4.   "year": 1964 
  5. # 方法一 
  6. my_inverted_dict_1 = dict(map(reversed, my_dict.items())) 
  7.  
  8. # 方法二 
  9. from collections import defaultdict 
  10. my_inverted_dict_2 = defaultdict(list) 
  11. {my_inverted_dict_2[v].append(k) for k, v in my_dict.items()} 
  12.  
  13. print(my_inverted_dict_1) 
  14. print(my_inverted_dict_2) 

结果如下:

字符串

与字符串相关的3个操作,介绍如下;

9. 使用 f 字符串格式化字符串

可能是您几乎每天都需要完成的第一项任务。在 Python 中有多种方法可以格式化字符串;我最喜欢的是使用 f 字符串。

 
 
 
 
  1. str_val = 'books' 
  2. num_val = 15 
  3. print(f'{num_val} {str_val}')  
  4. print(f'{num_val % 2 = }')  
  5. print(f'{str_val!r}')  
  6.  
  7. price_val = 5.18362 
  8. print(f'{price_val:.2f}')  
  9.  
  10. from datetime import datetime; 
  11. date_val = datetime.utcnow() 
  12. print(f'{date_val=:%Y-%m-%d}')  

结果如下:

10. 检查子串

我之前需要多次执行的一项非常常见的任务是,检查字符串是否在字符串列表中。

 
 
 
 
  1. addresses = ["123 Elm Street", "531 Oak Street", "678 Maple Street"] 
  2. street = "Elm Street" 
  3.  
  4. # 方法一 
  5. for address in addresses: 
  6.     if address.find(street) >= 0: 
  7.         print(address) 
  8.          
  9. # 方法二 
  10. for address in addresses: 
  11.     if street in address: 
  12.         print(address) 

结果如下:

11. 以字节为单位获取字符串的大小

有时,尤其是在构建内存关键应用程序时,我们需要知道我们的字符串使用了多少内存。幸运的是,这可以通过一行代码快速完成。

 
 
 
 
  1. str1 = "hello" 
  2. str2 = "" 
  3.  
  4. def str_size(s): 
  5.     return len(s.encode('utf-8')) 
  6.  
  7. print(str_size(str1)) 
  8. print(str_size(str2)) 

结果如下:

输入/输出操作

与输入/输出操作相关的2个操作,介绍如下;

12. 检查文件是否存在

在数据科学和许多其他应用程序中,我们经常需要从文件中读取数据或向其中写入数据。但要做到这一点,我们需要检查文件是否存在。因此,我们的代码不会因错误而终止。

 
 
 
 
  1. # 方法一 
  2. import os  
  3. exists = os.path.isfile('/path/to/file') 
  4.  
  5. # 方法二 
  6. from pathlib import Path 
  7. config = Path('/path/to/file')  
  8. if config.is_file():  
  9.     pass 

13.解析电子表格

另一种非常常见的文件交互是从电子表格中解析数据。幸运的是,我们有 CSV 模块来帮助我们有效地执行该任务。

 
 
 
 
  1. import csv 
  2. csv_mapping_list = [] 
  3. with open("/path/to/data.csv") as my_data: 
  4.     csv_reader = csv.reader(my_data, delimiter=",") 
  5.     line_count = 0 
  6.     for line in csv_reader: 
  7.         if line_count == 0: 
  8.             header = line 
  9.         else: 
  10.             row_dict = {key: value for key, value in zip(header, line)} 
  11.             csv_mapping_list.append(row_dict) 
  12.         line_count += 1 

当前题目:十三个好用到起飞的Python技巧!
转载来源:http://www.gawzjz.com/qtweb2/news14/18264.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联