0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python学习爱好者必学的13个技巧

Linux爱好者 来源:快学Python 作者:快快 2021-10-26 09:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Python 是当今广泛使用的编程语言之一,在数据科学、科学计算、Web 开发、游戏开发和构建桌面图形界面等各个领域都有应用。Python 因其在各个领域的实用性、与 Java、C 和 C++ 等其他编程语言相比的生产力以及与英语类似的命令而广受欢迎。

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

列表

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

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

假设我们在Python中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项目作为字典的键,另一个作为值。这是在用 Python 编写代码时经常遇到的一个非常常见的问题。 但是为了解决这个问题,我们需要考虑几个限制,比如两个列表的大小,两个列表中项目的类型,以及其中是否有重复的项目,尤其是我们将使用的项目 作为钥匙。我们可以通过使用像 zip 这样的内置函数来克服这个问题。

	
		keys_list=['A','B','C'] values_list=['blue','red','bold'] #有3种方法可以将这两个列表转换为字典 #1.使用Pythonzip、dict函数 dict_method_1=dict(zip(keys_list,values_list)) #2.使用带有字典推导式的zip函数 dict_method_2={key:valueforkey,valueinzip(keys_list,values_list)} #3.循环使用zip函数 items_tuples=zip(keys_list,values_list) dict_method_3={} forkey,valueinitems_tuples: ifkeyindict_method_3: pass else: dict_method_3[key]=value  print(dict_method_1) print(dict_method_2) print(dict_method_3)
		结果如下:

24960080-3583-11ec-82a8-dac502259ad0.png

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]]

	
		defmerge(*args,missing_val=None): max_length=max([len(lst)forlstinargs]) outList=[] foriinrange(max_length): outList.append([args[k][i]ifi< len(args[k]) elsemissing_valforkinrange(len(args))]) returnoutList merge([1,2,3],['a','b','c'],['h','e','y'],[4,5,6])
		结果如下:24d6ffea-3583-11ec-82a8-dac502259ad0.png

3. 对字典列表进行排序

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

	
		dicts_lists=[ { "Name":"James", "Age":20, }, { "Name":"May", "Age":14, }, { "Name":"Katy", "Age":23, } ] #方法一 dicts_lists.sort(key=lambdaitem:item.get("Age")) #方法二 fromoperatorimportitemgetter f=itemgetter('Name') dicts_lists.sort(key=f)
		结果如下:24fc533a-3583-11ec-82a8-dac502259ad0.png

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

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

	
		my_list=["blue","red","green"] #方法一 my_list.sort() my_list=sorted(my_list,key=len) #方法二 importlocale fromfunctoolsimportcmp_to_key my_list=sorted(my_list,key=cmp_to_key(locale.strcoll))
		结果如下:251c56d0-3583-11ec-82a8-dac502259ad0.png

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

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

	
		a=['blue','green','orange','purple','yellow'] b=[3,2,5,4,1] sortedList=[valfor(_,val)insorted(zip(b,a),key=lambdax:x[0])] print(sortedList)
		结果如下:25352020-3583-11ec-82a8-dac502259ad0.png

6. 将列表映射到字典

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

	
		mylist=['blue','orange','green'] #Mapthelistintoadictusingthemap,zipanddictfunctions mapped_dict=dict(zip(itr,map(fn,itr)))

字典

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

7. 合并两个或多个字典

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

	
		fromcollectionsimportdefaultdict defmerge_dicts(*dicts): mdict=defaultdict(list) fordictindicts: forkeyindict: res[key].append(d[key]) returndict(mdict)

8. 反转字典

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

	
		my_dict={ "brand":"Ford", "model":"Mustang", "year":1964 } #方法一 my_inverted_dict_1=dict(map(reversed,my_dict.items())) #方法二 fromcollectionsimportdefaultdict my_inverted_dict_2=defaultdict(list) {my_inverted_dict_2[v].append(k)fork,vinmy_dict.items()} print(my_inverted_dict_1) print(my_inverted_dict_2)
		结果如下:255a1f6a-3583-11ec-82a8-dac502259ad0.png

字符串

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

9. 使用 f 字符串

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

	
		str_val='books' num_val=15 print(f'{num_val}{str_val}') print(f'{num_val%2=}') print(f'{str_val!r}') price_val=5.18362 print(f'{price_val:.2f}') fromdatetimeimportdatetime; date_val=datetime.utcnow() print(f'{date_val=:%Y-%m-%d}')
		结果如下:2577aeea-3583-11ec-82a8-dac502259ad0.png

10. 检查子串

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

	
		addresses=["123ElmStreet","531OakStreet","678MapleStreet"] street="ElmStreet" #方法一 foraddressinaddresses: ifaddress.find(street)>=0: print(address)  #方法二 foraddressinaddresses: ifstreetinaddress: print(address)
		结果如下:2589fb86-3583-11ec-82a8-dac502259ad0.png

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

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

	
		str1="hello" str2="" defstr_size(s): returnlen(s.encode('utf-8')) print(str_size(str1)) print(str_size(str2))
		结果如下:259ac858-3583-11ec-82a8-dac502259ad0.png

输入/输出操作

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

12. 检查文件是否存在

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

	#方法一 importos exists=os.path.isfile('/path/to/file') #方法二 frompathlibimportPath config=Path('/path/to/file') ifconfig.is_file(): pass

13.解析电子表格

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

	
		importcsv csv_mapping_list=[] withopen("/path/to/data.csv")asmy_data: csv_reader=csv.reader(my_data,delimiter=",") line_count=0 forlineincsv_reader: ifline_count==0: header=line else: row_dict={key:valueforkey,valueinzip(header,line)} csv_mapping_list.append(row_dict) line_count+=1
责任编辑:haq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

    96759
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89572

原文标题:13个好用到起飞的Python技巧!

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【社区之星】宿晶亮——一人的爱好,足以点燃不设限的学习热情

    本身是一包容性很强的行业,可以要求专业者不断地追求极致,也可以给极客、爱好者、学生留有一片广阔的创意和学习空间。 工作经历 20多年的运维工作,从事过不超过2年时间的软件开发,算是入门,只是偶尔
    发表于 12-03 18:11

    大神,跪求小度学习机XHD-25-B3电路图

    一名自学爱好者,遇到困境,忘帮助,尾插充电口铜箔掉落求图纸
    发表于 11-12 17:58

    Pico Technology发布Python软件包pyPicoSDK

    现有 PicoSDK 的基础上构建,使工程师、开发人员和业余爱好者能够创建 Python 脚本,更加快速方便地控制其 PicoScope 设备。
    的头像 发表于 09-29 15:03 648次阅读

    【精选活动】开源EDA工具 KiCad 线下培训开始报名(11月13日)

    KiConAsia2025用户大会报名链接:KiCad爱好者集结号!KiConAsia2025报名通道正式开启!培训时间2025年11月13日。深圳南山万科云城亚朵酒店。
    的头像 发表于 09-09 08:07 707次阅读
    【精选活动】开源EDA工具 KiCad 线下培训开始报名(11月<b class='flag-5'>13</b>日)

    KiCad 爱好者集结号 KiCon Asia 2025 报名开启

    “  一年一度的亚洲 KiCad 盛会回来了!无论你是经验丰富的电子工程师、初出茅庐的创客,还是开源硬件的忠实拥护,KiCon Asia 2025 都是你学习、分享和交流的绝佳平台。精彩的技术演讲
    的头像 发表于 08-09 11:12 465次阅读
    KiCad <b class='flag-5'>爱好者</b>集结号 KiCon Asia 2025 报名开启

    KiCad 爱好者集结号!KiCon Asia 2025 报名通道正式开启!

    “  一年一度的亚洲 KiCad 盛会回来了!无论你是经验丰富的电子工程师、初出茅庐的创客,还是开源硬件的忠实拥护,KiCon Asia 2025 都是你学习、分享和交流的绝佳平台。精彩的技术演讲
    的头像 发表于 08-01 12:05 522次阅读
    KiCad <b class='flag-5'>爱好者</b>集结号!KiCon Asia 2025 报名通道正式开启!

    跟老齐学Python:从入门到精通

    础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。 获取完整文档资料可下载附件哦!!!! 如果内容
    发表于 06-03 16:10

    SOLIDWORKS建模秘籍——必学的五草图与建模技巧

    SOLIDWORKS作为一款功能强大的三维CAD软件,广泛应用于各种设计和产品开发领域。掌握SOLIDWORKS的草图与建模技巧,能够显著提升设计效率,减少错误,并快速将创意转化为现实。以下是五必学的SOLIDWORKS草图与建模技巧,帮助你成为设计高手。
    的头像 发表于 05-26 13:17 837次阅读
    SOLIDWORKS建模秘籍——<b class='flag-5'>必学</b>的五<b class='flag-5'>个</b>草图与建模技巧

    电子电路百科全书

    资料会有点老,但是可以用于学习~内容提要本书共收编富有实用价值的98类1300典型电子电路,包括基础电路和近年来新出现的各种应用电路。所收入的电路除给出电路图外,一·般还附有简要说明、可供电子科技工作者、高等院校和中等专科学校师生、广大电子
    发表于 04-16 13:27

    每周推荐!电子工程师必学!典型电路原理、电路识图从入门到精通等资料

    元器件名称大小都标识清楚。非常适合电子爱好者参考使用。 4、电子工程师必学!50典型电路原理与实例分析 电路工作原理: 本电路图如图 10所示。通过二极管 VD2~VD5 整流、电容器 C2 滤波后
    发表于 04-11 15:17

    无线电爱好者实用电子制作精选

    魔音门铃,对讲音乐门铃,自动稳光的调光台灯,自熄台灯,音乐彩灯,彩虹吸顶灯,简易卡拉OK话筒,简易电视天线放大器,电热毯通电指示器,电饭煲火力调制器,电冰箱温度显示器,家用电器简易过压保护器,视力保护测光器,声控音乐娃娃,电子温度计,自行车里程计等等。
    发表于 04-07 11:26

    FPV蘑菇头天线:为何成为FPV爱好者的首选

    深圳安腾纳天线|FPV蘑菇头天线:为何成为FPV爱好者的首选
    的头像 发表于 03-17 09:06 1753次阅读

    20经典电路分享

      20经典电路,工程师平均懂10,你拖后腿了吗? 引言 对模拟电路的掌握分为三层次。 初级层次是熟练记住这二十个电路,清楚这二十个电路的作用。只要是电子爱好者,只要是
    的头像 发表于 02-10 18:19 4845次阅读
    20<b class='flag-5'>个</b>经典电路分享

    工程师入门必学的二十个模拟电路

    电子发烧友网站提供《工程师入门必学的二十个模拟电路.pdf》资料免费下载
    发表于 02-07 16:03 4次下载

    电子技术爱好者的电路设计经验分享

    作为一名热衷于电子技术的爱好者,在长期探索电路设计的过程中,积累了不少宝贵经验,希望能与同样热爱这一领域的朋友们分享。   在着手电路设计前,清晰明确设计目标至关重要。无论是制作一简单的电子
    的头像 发表于 01-08 14:56 1282次阅读