返回顶部
首页 > 资讯 > 后端开发 > Python >分享13个好用到起飞的Python技巧
  • 873
分享到

分享13个好用到起飞的Python技巧

2024-04-02 19:04:59 873人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言列表1. 将两个列表合并到一个字典中2.将两个或多个列表合并为一个列表3. 对字典列表进行排序4. 对字符串列表进行排序5. 根据另一个列表对列表进行排序6. 将列表映射到字

前言

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

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

列表

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

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

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

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


keys_list = ['A', 'B', 'C'] 
values_list = ['blue', 'red', 'bold'] 
 
# 有 3 种方法可以将这两个列表转换为字典 
# 1.使用Python zip、dict函数 
dict_method_1 = dict(zip(keys_list, values_list)) 
 
# 2. 使用带有字典推导式的 zip 函数 
dict_method_2 = {key:value for key, value in zip(keys_list, values_list)} 
 
# 3.循环使用zip函数 
items_tuples = zip(keys_list, values_list)  
dict_method_3 = {}  
for key, value in items_tuples:  
    if key in dict_method_3:  
        pass  
    else:  
        dict_method_3[key] = value 
         
print(dict_method_1) 
print(dict_method_2) 
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]] 。


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

结果如下:        

3. 对字典列表进行排序

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


dicts_lists = [ 
  { 
    "Name": "James", 
    "Age": 20, 
  }, 
  { 
     "Name": "May", 
     "Age": 14, 
  }, 
  { 
    "Name": "Katy", 
    "Age": 23, 
  } 
] 
 
# 方法一 
dicts_lists.sort(key=lambda item: item.get("Age")) 
 
# 方法二 
from operator import itemgetter 
f = itemgetter('Name') 
dicts_lists.sort(key=f) 

结果如下:        

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

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


my_list = ["blue", "red", "green"] 
 
# 方法一 
my_list.sort()  
my_list = sorted(my_list, key=len)  
 
# 方法二 
import locale 
from functools import cmp_to_key 
my_list = sorted(my_list, key=cmp_to_key(locale.strcoll))  

结果如下:                        

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

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


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

结果如下:        

6. 将列表映射到字典

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


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

字典

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

7. 合并两个或多个字典

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


from collections import defaultdict 
 
def merge_dicts(*dicts): 
    mdict = defaultdict(list) 
    for dict in dicts: 
    for key in dict: 
        res[key].append(d[key]) 
    return dict(mdict) 

8. 反转字典

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


my_dict = { 
  "brand": "Ford", 
  "model": "Mustang", 
  "year": 1964 
} 
# 方法一 
my_inverted_dict_1 = dict(map(reversed, my_dict.items())) 
 
# 方法二 
from collections import defaultdict 
my_inverted_dict_2 = defaultdict(list) 
{my_inverted_dict_2[v].append(k) for k, v in my_dict.items()} 
 
print(my_inverted_dict_1) 
print(my_inverted_dict_2) 

结果如下:    

字符串

与字符串相关的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}')  
 
from datetime import datetime; 
date_val = datetime.utcnow() 
print(f'{date_val=:%Y-%m-%d}')  

结果如下:          

10. 检查子串

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


addresses = ["123 Elm Street", "531 Oak Street", "678 Maple Street"] 
street = "Elm Street" 
 
# 方法一 
for address in addresses: 
    if address.find(street) >= 0: 
        print(address) 
         
# 方法二 
for address in addresses: 
    if street in address: 
        print(address) 

结果如下:    

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

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


str1 = "hello" 
str2 = "" 
 
def str_size(s): 
    return len(s.encode('utf-8')) 
 
print(str_size(str1)) 
print(str_size(str2)) 

结果如下:        

输入/输出操作

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

12. 检查文件是否存在

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


# 方法一 
import os  
exists = os.path.isfile('/path/to/file') 
 
# 方法二 
from pathlib import Path 
config = Path('/path/to/file')  
if config.is_file():  
    pass 

13.解析电子表格

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


import csv 
csv_mapping_list = [] 
with open("/path/to/data.csv") as my_data: 
    csv_reader = csv.reader(my_data, delimiter=",") 
    line_count = 0 
    for line in csv_reader: 
        if line_count == 0: 
            header = line 
        else: 
            row_dict = {key: value for key, value in zip(header, line)} 
            csv_mapping_list.append(row_dict) 
        line_count += 1 

总结

到此这篇关于13个好用到起飞的Python技巧的文章就介绍到这了,更多相关好用的Python技巧内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 分享13个好用到起飞的Python技巧

本文链接: https://lsjlt.com/news/137579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 分享13个好用到起飞的Python技巧
    目录前言列表1. 将两个列表合并到一个字典中2.将两个或多个列表合并为一个列表3. 对字典列表进行排序4. 对字符串列表进行排序5. 根据另一个列表对列表进行排序6. 将列表映射到字...
    99+
    2024-04-02
  • 分享9个好用的Python技巧
    目录1.引言2.Trick 13.Trick 24.Trick35.Trick46.Trick57.Trick68.Trick79.Trick810.Trick911.总结1.引言 ...
    99+
    2024-04-02
  • 分享Python 的24个编程超好用技巧
    目录1、ALL OR ANY2、BASHPLOTIB3、COLLECTIONS4、DIR5、EMOJI6、FROM_FUTURE_IMPORT7、GEOPY8、HOWDOI9、INS...
    99+
    2024-04-02
  • 详解让Python性能起飞的15个技巧
    目录前言如何测量程序的执行时间1.使用map()进行函数映射2.使用set()求交集3.使用sort()或sorted()排序4.使用collections.Counter()计数5...
    99+
    2024-04-02
  • 分享9个实用的Python技巧
    本篇内容介绍了“分享9个实用的Python技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!清理字符串输入对用户输入进行清理的问题几乎适用于...
    99+
    2023-06-16
  • 20个Python常用技巧分享
    目录1.字符串反转2.每个单词的第一个字母大写3. 字符串查找唯一元素4.重复打印字符串和列表n次5.列表生成6.变量交换7.字符串拆分为子字符串列表8.多个字符串组合为一...
    99+
    2023-05-14
    Python常用技巧分享 Python常用技巧 Python技巧
  • 分享Python 的十个小技巧
      一. 列表、字典、集合、元组的使用  from random import randint, sample  # 列表解析  data = [randint(-10, 10) for _ in xrange(10)]  filter(l...
    99+
    2023-01-31
    小技巧 Python
  • Win8系统13个简单优化技巧分享
      每一台电脑使用时间久了就是发现慢、卡顿等现象,那么我们需要对机子进行简单的优化。在Windows8系统中,有哪些优化技巧呢 win8   1.关闭视觉特效   反正 Win8 的界面主题都已经是反璞归...
    99+
    2022-06-04
    简单 技巧 系统
  • 让Python性能起飞的技巧有哪些
    这篇文章主要讲解了“让Python性能起飞的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“让Python性能起飞的技巧有哪些”吧!如何测量程序的执行时间关于 Python 如何精确...
    99+
    2023-06-29
  • 让你更好使用Typescript的11个技巧分享
    目录将类型想象成集合理解类型声明和类型收窄使用带有区分的联合类型而不是可选字段使用类型谓词来避免类型断言控制联合类型的分布方式使用穷举式检查,在编译时捕捉未处理的情况优先选择 typ...
    99+
    2023-01-05
    Typescript使用技巧 Typescript技巧
  • 10个Python中Pip的使用技巧分享
    目录Python pip1.安装 pip2.升级 pip3.安装库4. 库的批量安装5.卸载和升级包6. 冻结 Python pip 依赖7.查看库信息8.查看需要升级的库9. 检查...
    99+
    2024-04-02
  • 分享介绍Python的9个实用技巧
    本文会介绍一些Python大神用的贼溜的技巧,让一探究竟吧!欢迎收藏学习,喜欢点赞支持,欢迎畅聊。 整理字符串输入 整理用户输入的问题在编程过程中很常见。有更好的方法来解决: u...
    99+
    2024-04-02
  • 分享15超级好用得Python实用技巧
    目录01 all or any02 dir03 列表(list)推导式04 pprint05 repr06 sh07 Type hints08 uuid09 wikipedia10 ...
    99+
    2024-04-02
  • 十三个写好shell脚本的技巧分享
    前言 产品的最终用户通常不懂技术,所以不管你怎么折腾产品代码都无所谓。但脚本代码不一样,它们是开发人员写给开发人员的。 有多少次,你运行./script.sh,然后输出一些东西,但却不知道它刚刚都做了些什么。这是一种...
    99+
    2022-06-04
    shell脚本技巧 如何写shell脚本 写shell脚本
  • Python语言的10个小技巧分享
    这篇文章主要讲解了“Python语言的10个小技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python语言的10个小技巧分享”吧!10个Python小技巧1. 用ZIP处理列表假设...
    99+
    2023-06-16
  • python property的使用技巧分享
    property属性 一种用起来像是使用实例属性一样的特殊属性,可以对应于某个方法 既要保护类的封装特性,又要让开发者可以使用 对象.属性 的方式操作方法,@property 装饰器,可以直接通过方法名来访问方...
    99+
    2022-06-02
    python property
  • 5个实用的Pandas技巧分享
    本篇内容主要讲解“5个实用的Pandas技巧分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“5个实用的Pandas技巧分享”吧!目录Pandas技巧1&...
    99+
    2024-04-02
  • 7个Python中的隐藏小技巧分享
    目录前言1、功能属性2、不完整代码的占位符3、 eval() 函数4、在 Python 解析器中使用以下命令启动文件托管服务器5、无限参数6、Zip() 方法7、旋转列表前言 Pyt...
    99+
    2023-03-20
    Python隐藏技巧分享 Python隐藏技巧 Python技巧
  • Python数据处理的三个实用技巧分享
    目录1 Pandas 移除某列2 统计标题单词数3 Genre 频次统计我使用的 Pandas 版本如下,顺便也导入 Pandas 库。 >>> import pa...
    99+
    2024-04-02
  • 13个有趣又好玩的Python游戏代码分享
    目录1、吃金币2、打乒乓3、滑雪4、并夕夕版飞机大战5、打地鼠6、小恐龙7、消消乐8、俄罗斯方块9、贪吃蛇10、24点小游戏11、平衡木12、外星人入侵13、井字棋888经常听到有朋...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作