Python中不为人知的四个特性
1. 引言
自2017年以来,我一直在用Python编程实现各种各样的功能,但是在过去的一年中才知道这些新的特性。本文重点介绍Python中一些不常用但是非常有用的特性。
闲话少说,我们直接开始吧!
2. Frozensets
frozenset()
用于返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
举例如下:
fs = frozenset([1,2,3])
print(fs)
输出如下:
冻结集合的缺点总结如下:
- 创建冻结集合后,我们无法在往冻结集合中添加或删除任何内容
- 我们只能将变量重新分配给新的冻结集合
冻结集合的优点总结如下:
- 它是不可变的,因此我们可以将其用作字典的键
- 它是不可变的,因此我们可以将
frozenset
放入另一个set
中 - 检查冻结集是否包含某些元素需要
O(1)
时间复杂度 - 我们仍然可以使用
.union
或.intersection
等方法来操作冻结集
3. 字符串对齐— ljust, rjust and center
字符串中的方法.ljust
,.rjust
和.center
可以使我们能够轻松实现字符串对齐。例如:
print("|" + "hello".ljust(20) + "|")
print("|" + "hello".rjust(20) + "|")
print("|" + "hello".center(20) + "|")
输出如下:
解释如下:
.ljust(20)
返回一个长度为 20 的字符串,右侧填充空格.rjust(20)
返回一个长度为 20 的字符串,左侧填充空格.center(20)
返回一个长度为 20 的字符串,两边填充相等数目的空格
注意:
如果我们输出的字符串长度大于在这 3 个方法中输入的数字,则它只是返回原始字符串,而不添加空格。
4. 使用pickle序列化多个对象
我知道可以使用pickle来输出单个对象,但我最初不知道可以使用pickle来序列化多个对象。
举例如下:
fruits = ["apple", "orange", "pear"]
prices = [4, 5, 6]
quantities = [100,200,300]
我们将上述三个列表序列化并保存到.pckl
文件中,如下:
import pickle
with open("test.pckl", "wb") as f:pickle.dump(fruits, f)pickle.dump(prices, f)pickle.dump(quantities, f)
接着,我们来反序列化上述对象(将.pckl
文件转换回Python对象):
with open("test.pckl", "rb") as f:fruits = pickle.load(f)prices = pickle.load(f)quantities = pickle.load(f)
print(fruits)
print(prices)
print(quantities)
5. 终端彩色输出
我们需要安装第三方库,如下:
pip install colorama
接着我们来输出彩色文本,如下:
from colorama import Fore
print(Fore.RED + "hello")
print(Fore.BLUE + "hello")
print(Fore.GREEN + "hello")
输出如下:
6. 总结
本文重点介绍了Python中不常使用的四个特性,并针对每个特性给出了相应的代码示例。
您学废了嘛?
Python中不为人知的四个特性相关推荐
- python的ols_【量化工具】OLS在python中的四种实现方式
在p-quant中,线性回归应该是最最最重要的统计方法了,没有之一:OLS又是线性回归中最常见的形式,在python中可以利用多个方法来实现 考虑线性回归如下形式 一.sklearn from skl ...
- Python中的四种队列(queue)、堆(heap)
Python中提供了四种内置的队列实现,特别地其中的优先级队列可以用来实现堆.此外,在Python中我们也直接使用堆.熟练掌握这些数据结构,在问题求解时可以大大简化代码的实现.文末将结合一道Leetc ...
- python中字符串定义及特性
一.字符串的定义 字符串 就是一系列字符.在 Python 中,用引号括起的都是字符串,其中的引号可以是单引号,下面的c在使用单引号的时候,需要转译,这是由于句子中含有单引号,也可以是双引号,如下所示 ...
- Python中的四种交换数值的方法
交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的. 今天这个面试是问大家有几种办法来实现交换两个变量的值. 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 ...
- python中字典使用_python中字典的使用
python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...
- python中args和kwargs_Python 函数参数*args和**kwargs
尽管*args和**kwargs参数不受重视,但这它们是Python中非常有用的特性.了解其中的潜能会让你成为更高效的开发者. *args和**kwargs参数到底有什么用呢?它们能让函数接受可选参数 ...
- Python中metaclass解释
Classes as objects 首先,在认识metaclass之前,你需要认识下python中的class.python中class的奇怪特性借鉴了smalltalk语言.大多数语言中,clas ...
- python中var是什么_这些Python Number 知识你需要了解!
原标题:这些Python Number 知识你需要了解! 如果把编程比作建房子,那么数据就是建材.而建材有砖头.水泥.木头.钢材等,不同类型的建材配合工作,才能把房子建好.编程也一样,不同类型的数据类 ...
- python中延时函数_python延时函数
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 可以使用python的time模块来实现类似于c中的sleep函数作用代码如下: ...
最新文章
- 创立创造创建的区别_【干货|知识分享】Solidworks与Rhino有什么区别呢?
- FastMaskRCNN算法TensorFlow配置,训练
- PHP设计模式--数据访问对象模式
- mysql y_关于MySQL中Y和~问题
- UNIX/Linux 系统管理技术手册阅读(二)
- Java c语言词法,c语言写的Java词法分析
- python sqlite cursor
- iPhone 9或于4月3日发布;复制粘贴之父Larry Tesler去世;Android 11开发者预览版来了!| 极客头条...
- 539.最小时间差-LeetCode
- linux ras目录,Linux下配置站点-FTP-RSA私钥-公钥
- Linux IO系统分析(scsi篇)
- Java中NumberFormat格式化数字
- j2sdkversion-doc.zip下载地址
- JS-获取视频总时长
- RTX 3090Ti发布!元宇宙平台开放!
- 输入一个字符串,逆序并输出
- python爬虫爬取今日头条_python 简单爬取今日头条热点新闻(一)
- hive中常用字符串转时间的处理方法
- Javascript 将阿拉伯数字转换成罗马数字
- ubuntu ip地址修改
热门文章
- 去哪查阅ISO国际标准?
- [C] 不撞南墙不回头——深度优先搜索
- MacOS Big Sur 如何安装创新SBX-Fi Surround 5.1Pro(USB外置)声卡?
- Anbox 编译和Anbox Docker 下编译运行
- 利用apktool查看apk源代码
- C#基础+面向对象学习
- android应用的优化建议(转载)
- 给大家推荐一下常用的镜像站
- 怎么转换视频格式?腾讯视频qlv格式转换mp4方法
- 故事版(storyBoard)-lllegal configuration connection object cannot have a prototype objct as