你需要知道的13个有用的Python片段 用这些日常片段优化你的工作流程


Python是当今广泛使用的编程语言之一,应用于各个领域,如数据科学、科学计算、网络开发、游戏开发和构建桌面图形界面。Python之所以如此受欢迎,是因为它在各个领域都很有用,与其他编程语言如Java、C和C++相比,它的生产力很高,而且它的命令很像英语。

假设你是数据科学或一般编程的新手。在这种情况下,你经常发现人们推荐Python作为第一种要学习的编程语言,因为它有简单易懂的语法和更好的代码可读性,使没有编程背景的人学习起来更加直接。

当你每天使用Python来解决挑战、开发算法和构建应用程序时,你会发现自己在不断地重复一些任务。这就是为什么为通常执行的任务准备一些代码片段是一个很好的选择,这样你就可以在需要时直接在你的项目中使用它们。

我知道现在有很多按领域分类的Python代码段。例如,有一些Python片段,特别是用于数据科学,或用于探索性数据分析或可视化。除了数据科学,还有用于游戏开发、图形界面设计和网络开发的片段。但是,在这篇文章中,我将专注于你可以在所有这些应用中使用的通用代码段。

列表式片段 我们将从几个关于我认为是 Python 最常用的数据结构--列表的片段开始。

№1: 将两个列表合并成一个字典 假设我们在 Python 中有两个列表,我们想把它们合并成一个字典的形式,其中一个列表的项作为字典的键,另一个作为值。这是一个在 Python 中编写代码时经常遇到的问题。

思考如何建立一本袖珍的黄页,例如:119是火警电话;110:报警电话等;字典是高效直观的数据结构,数据查询量极大的时候,字典的查询效率很高;

tel = ['110','119'] service = ['报警','火警'] 如何合并两个列表成为字典:

tel_service = {'110':'报警' '119':'火警'}

并且注意合并两个列表的长度是否一致?

列表的元素是否unique:是否唯一没有重复出现?

keys_list = ['A', 'B', 'C']values_list = ['blue', 'red', 'bold']

#There are 3 ways to convert these two lists into a dictionary#1- Using Python's zip, dict functionzdict_method_1 = dict(zip(keys_list, values_list))

#2- Using the zip function with dictionary comprehensionsdict_method_2 = {key:value for key, value in zip(keys_list, values_list)}

#3- Using the zip function with a loopitems_tuples = zip(keys_list, values_list) dict_method_3 = {} for key, value in items_tuples:     if key in dict_method_3:         pass # To avoid repeating keys.    else:         dict_method_3[key] = value

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

№2:将两个或多个列表合并为一个列表的列表

另一个常见的任务是当我们有两个或更多的列表时,我们想把它们都收集到一个大的列表中,其中小列表的所有第一项构成大列表的第一项。

例如,如果我有4个列表

[1,2,3], ['a', 'b', 'c'], ['h', 'e', 'y'], [4,5,6] 

我们想把这四个列表组成一个新的列表;

def merge(*args, missing_val = None):#missing_val will be used when one of the smaller lists is shorter tham the others.#Get the maximum length within the smaller lists.  max_length = max([len(lst) for lst in args])  outList = []  for i in range(max_length):    result.append([args[k][i] if i < len(args[k]) else missing_val for k in range(len(args))])  return outList

它将是:

[[1, 'a', 'h',4], [2, 'b', 'e',5], [3, 'c', 'y', 6]]

№3: 对一个字典列表进行排序

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

dicts_lists = [  {    "Name": "James",    "Age": 20,  },  {     "Name": "May",     "Age": 14,  },  {    "Name": "Katy",    "Age": 23,  }]

#There are different ways to sort that list#1- Using the sort/ sorted function based on the agedicts_lists.sort(key=lambda item: item.get("Age"))

#2- Using itemgetter module based on namefrom operator import itemgetterf = itemgetter('Name')dicts_lists.sort(key=f)

№4:对字符串列表进行排序 我们经常会遇到包含字符串的列表,我们需要对这些列表按字母顺序、按长度或按我们想要或我们的应用程序需要的任何其他因素进行排序。

my_list = ["blue", "red", "green"]

#1- Using sort or srted directly or with specifc keysmy_list.sort() #sorts alphabetically or in an ascending order for numeric data my_list = sorted(my_list, key=len) #sorts the list based on the length of the strings from shortest to longest. # You can use reverse=True to flip the order

#2- Using locale and functools import localefrom functools import cmp_to_keymy_list = sorted(my_list, key=cmp_to_key(locale.strcoll)) 

现在,我应该提到,这些是对字符串列表进行排序的直接方法,但你有时可能需要实现你的排序算法来解决这个问题。

№5:基于另一个列表的排序 有时,我们可能想/需要用一个列表来对另一个列表进行排序。所以,我们会有一个数字列表(索引)和一个我想用这些索引来排序的列表。

a = ['blue', 'green', 'orange', 'purple', 'yellow']b = [3, 2, 5, 4, 1]#Use list comprehensions to sort these listssortedList =  [val for (_, val) in sorted(zip(b, a), key=lambda x: \          x[0])]

№6: 将一个列表映射成一个字典 我们在这篇文章中要解决的最后一个与列表有关的任务是,如果给我们一个列表并将其映射成一个字典。也就是说,我想把我的列表转换成一个有数字键的字典。

mylist = ['blue', 'orange', 'green']#Map the list into a dict using the map, zip and dict functionsmapped_dict = dict(zip(itr, map(fn, itr)))

字典片段 下面我们要解决的数据类型是字典。

№7: 合并两个或多个字典 前方高能:using the collections module

假设我们有两个或更多的字典,我们想把它们都合并成一个具有唯一键的字典。

from collections import defaultdict#合并两个或多个字典#merge two or more dicts using the collections moduledef merge_dicts(*dicts):  mdict = defaultdict(list)  for d in dicts:    for key in d:      mdict[key].append(d[key])  return dict(mdict)

№8: 倒置一个字典

一个很常见的字典任务是,如果我们有一个字典,想把它的键和值翻转过来。所以,键会变成值,而值会变成键。

my_dict = {  "brand": "Ford",  "model": "Mustang",  "year": 1964}#Invert the dictionary based on its content#1- If we know all values are unique.my_inverted_dict = dict(map(reversed, my_dict.items()))

#2- If non-unique values existfrom collections import defaultdictmy_inverted_dict = defaultdict(list){my_inverted_dict[v].append(k) for k, v in my_dict.items()}

#3- If any of the values are not hashablemy_dict = {value: key for key in my_inverted_dict for value in my_inverted_dict[key]}

当我们这样做时,我们需要确保我没有重复的键,值可以重复,但键不能,并确保所有新的键是可散列的。

字符串摘录

№9:使用f字符串

格式化字符串可能是你几乎每天都需要做的头号任务。在Python中,有多种方法可以格式化字符串;我最喜欢的方法是使用f字符串。

#Formatting strings with f string.str_val = 'books'num_val = 15print(f'{num_val} {str_val}') # 15 booksprint(f'{num_val % 2 = }') # 1print(f'{str_val!r}') # books

#Dealing with floatsprice_val = 5.18362print(f'{price_val:.2f}') # 5.18

#Formatting datesfrom datetime import datetime;date_val = datetime.utcnow()print(f'{date_val=:%Y-%m-%d}') # date_val=2021-09-24

№10: 检查子串

我以前多次需要执行的一个非常普通的任务是检查一个字符串是否在一个字符串的列表中。

addresses = ["123 Elm Street",             "531 Oak Street",             "678 Maple Street"]

street = "Elm Street"

#The top 2 methods to check if street in any of the items in the addresses list#1- Using the find methodfor address in addresses:    if address.find(street) >= 0:        print(address)

方法2:

#2- Using the "in" keyword for address in addresses:    if street in address:        print(address)

№11: 获取字符串的字节大小 有时,特别是在构建内存关键型的应用程序时,我们需要知道我们的字符串使用了多少内存。幸运的是,这可以通过一行代码快速完成。

str1 = "hello"str2 = "												

你需要知道的13个有用的Python片段相关推荐

  1. C#开发人员应该知道的13件事情

    C#开发人员应该知道的13件事情 本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助. 1. 开发过程 开发过程是错误和缺陷开始的地方.使用工具可以帮助你在发布之后,解决掉一些问 ...

  2. keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件

    一次我去我学校的球场看足球比赛,遇见一对父母,他们在为自己的孩子拍摄,全程用自动挡,还对着几百米远奔跑的儿童开闪光灯!老实说作为一名严肃的摄影爱好者我有深深的强迫症,于是忍不住就上去跟他们聊开手把手教 ...

  3. C# Development 13 Things Every C# Developer Should Know--C#开发人员应该知道的13件事情

    原文链接:https://dzone.com/refcardz/csharp 本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助. 1. 开发过程 开发过程是错误和缺陷开始的地方 ...

  4. SQL Server 2005:你应该知道的13件事情

    距离微软的SQL Server 2005正式版的推出,已经将近一年的时间.随着最近两份研究报告的出炉,SQL Server 2005又引起了业界的关注和评论--微软凭借SQL Server 2005取 ...

  5. 压电陶瓷材料测试需要知道的13个基本参数

    压电陶瓷材料需要知道的13个基本参数 序号 性能参数名称 符号 指 标 允许 公差 P-33 P-41 P-42 P-44 P-51 P-52 P-53 P-61 P-81 1 机电耦合系数 Kp 0 ...

  6. (转)创业需要知道的13句话

    这篇文章的作者是Y Combinator创始人Paul Graham.此文被收录在Y Combinator的创业图书馆中.在文中,Graham博士对创业者给出了13个忠告:1. 选择好的创业伙伴:2. ...

  7. jsf 开发_JSF开发人员应该知道的5种有用方法

    jsf 开发 这篇文章的目的是总结一些JSF开发人员可以在日常工作中使用的便捷方法. 实用程序类是将所有方法放在一起的好地方. 我会称此类为FacesAccessor. 第一种方法可能是最常用的方法. ...

  8. JSF开发人员应该知道的5种有用方法

    这篇文章的目的是总结一些JSF开发人员可以在日常工作中使用的便捷方法. 实用程序类是将所有方法放在一起的好地方. 我会称此类为FacesAccessor. 第一种方法可能是最常用的方法. 它以给定名称 ...

  9. 升级到WP8必需知道的13个特性

    http://www.cnblogs.com/sonic1abc/archive/2012/11/28/2792467.html Windows phone 8 SDK 已经发布一段时间了, 已经有很 ...

最新文章

  1. Bzoj2110--Wc2011Xor
  2. volatile 和 mutable 关键字
  3. ISME | 通过长读长宏基因组测序揭示南极土壤未培养细菌的生物合成潜力
  4. Python快速学习10: 循环的对象及设计 (生活的规律)
  5. JVM PrintGCDetails打印GC细节
  6. python 2和Python3的常见区别及修改办法
  7. Tensorflow c api
  8. 搭建卷积神经网络怎么确定参数_汽车冲压模具中拉延件各参数要怎么确定?本文教你确定方法!...
  9. IOPS和Throughput
  10. [转]JAVA 在main中访问内部类、方法等
  11. ubuntu18.04 本地源制作
  12. 【AIQ合集】人工智能技术学习资料年度整理大合集电子书 PDF下载
  13. openerp换mysql_OpenERP 源码变更后数据库升级
  14. 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 插电!开机!轻松秒杀!
  15. 论文学习笔记 POSEIDON: Privacy-Preserving Federated Neural Network Learning
  16. Java利用HttpClient发送请求生成微信支付二维码、查询支付状态
  17. LiteOS学习笔记-9LiteOS SDK oc流程之MQTT
  18. Unity 引擎报错集锦
  19. vue + element 使用 iframe
  20. eNSP WLAN WDS 手拉手

热门文章

  1. 自驾人士对于出行安全,闯红灯,限速,实时路况怎么理解,云电子狗帮您解决一切烦恼
  2. nod-1640-天气晴朗的魔法
  3. Camera raw 12bit 图获取及格式分析(干货)
  4. 常见的限流算法和应用场景
  5. 《Python语言程序设计》——序列习题练习
  6. 看天猫图片列表自适应小结
  7. 阿拉伯数字金额转中文大写金额 base C++
  8. 马化腾:视频号基本是全公司的希望;雷军宣布小米人事调整:总裁王翔月底退休,卢伟冰晋升接任;QT 6.5 Beta发布|极客头条
  9. graphpad 折线图横坐标比例_你的paper你的图 | 手把手教你GraphPad Prism绘制XY折线图...
  10. PS 2022安装失败错误代码182解决办法