每日一课 | 一文总结Python四大数据类型
03
大家好,我是营长,上期营长分享了“Python四大基本语法”,这期营长接着为大家分享Python相关内容。
本期分享内容:Python四大数据类型
这期分享营长邀请的是zglg (某大厂算法工程师)和Alicia (美国顶尖学府 AI 博士后)两位为我们分享Python全栈精通之路。
作者有话说
很多人问为什么要写这个专栏?因为我也有过那段“自学” Python 的迷茫时期,所以深知一个好的系统学习规划和老师讲解,是能够达到事半功倍省下我们程序员更多青春的关键。
别的老师在介绍知识点时都会说“这东西是什么”,但我不想这样做。
我觉得“为什么这东西是这样”或者“在什么场景适应什么需求有什么好处才会用这东西”,反而更能让你们对知识本身会有更深刻的理解。
03
Python四大数据类型
基本数据类型
数值型
Python 中的数据皆是对象,比如被熟知的int整型对象,float双精度浮点型,bool逻辑对象,它们都是单个元素。举两个例子:
前缀加0x,创建一个十六进制的整数:
0xa5 # 等于十进制的 165
使用e创建科学计数法表示的浮点数:
1.05e3 # 1050.0
容器型
可容纳多个元素的容器对象,常用的比如:list列表对象, tuple元组对象, dict字典对象, set集合对象。Python 定义这些类型的变量,语法非常简洁。
举例如下:
使用一对中括号[],创建一个list型变量:
lst = [1,3,5] # list变量
使用一对括号(),创建一个tuple型对象:
tup = (1,3,5) # tuple变量
使用一对花括号{}另使用冒号:,创建一个dict对象:
dic = {'a':1, 'b':3, 'c':5} # dict变量
仅使用一对花括号{},创建一个set对象:
s = {1,3,5} # 集合变量
Python 的容器类型,list, dict, tuple, set 等能方便地实现强大的功能,下面列举几个:
1) 去最求平均
def score_mean(lst): lst.sort() lst2=lst[1:(len(lst)-1)] return round((sum(lst2)/len(lst2)),1)
lst=[9.1, 9.0,8.1, 9.7, 19,8.2, 8.6,9.8]score_mean(lst) # 9.1
2) 打印 99 乘法表
打印出如下格式的乘法表
1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
一共有 10 行,第i行的第j列等于:j*i,其中
i取值范围:1<=i<=9
j取值范围:1<=j<=i
根据例子分析的语言描述,转化为如下代码:
for i in range(1,10): ...: for j in range(1,i+1): ...: print('%d*%d=%d'%(j,i,j*i),end="\t") ...: print()
3) 样本抽样
使用sample抽样,如下例子从 100 个样本中随机抽样 10 个。
from random import randint,samplelst = [randint(0,50) for _ in range(100)]print(lst[:5])# [38, 19, 11, 3, 6]lst_sample = sample(lst,10)print(lst_sample) # [33, 40, 35, 49, 24, 15, 48, 29, 37, 24]
字符串
注意 Python 中没有像C++表示的字符类型(char),所有的字符或串都被统一为str对象。如单个字符c的类型也为str.
str类型会被经常使用,先列举 5 个被高频使用的方法:
strip用于去除字符串前后的空格:
In [1]: ' I love python\t\n '.strip()Out[1]: 'I love python'
replace用于字符串的替换:
In [2]: 'i love python'.replace(' ','_')Out[2]: 'i_love_python'
join用于合并字符串:
In [3]: '_'.join(['book', 'store','count'])Out[3]: 'book_store_count'
title用于单词的首字符大写:
In [4]: 'i love python'.title()Out[4]: 'I Love Python'
find用于返回匹配字符串的起始位置索引:
In [5]: 'i love python'.find('python')Out[5]: 7
举个应用字符串的案例,判断 str1 是否由 str2 旋转而来。
字符串stringbook旋转后得到bookstring,写一段代码验证str1是否为str2旋转得到。
转化为判断:str1是否为str2+str2的子串
def is_rotation(s1: str, s2: str) -> bool: if s1 is None or s2 is None: return False if len(s1) != len(s2): return Falsedef is_substring(s1: str, s2: str) -> bool: return s1 in s2 return is_substring(s1, s2 + s2)
测试
r = is_rotation('stringbook', 'bookstring')print(r) # Truer = is_rotation('greatman', 'maneatgr')print(r) # False
字符串的匹配操作除了使用str封装的方法外,Python 的re正则模块匹配字符串,功能更加强大且写法极为简便,广泛适用于网络爬虫和数据分析领域。
下面这个例子实现的是:密码安全检查,使用正则表达式非常容易实现。
密码安全要求:1)要求密码为 6 到 20 位; 2)密码只包含英文字母和数字
pat = re.compile(r'\w{6,20}') # 这是错误的,因为\w通配符匹配的是字母,数字和下划线,题目要求不能含有下划线# 使用最稳的方法:\da-zA-Z满足`密码只包含英文字母和数字`pat = re.compile(r'[\da-zA-Z]{6,20}')
选用最保险的fullmatch方法,查看是否整个字符串都匹配:
pat.fullmatch('qaz12') # 返回 None, 长度小于6pat.fullmatch('qaz12wsxedcrfvtgb67890942234343434') # None 长度大于22pat.fullmatch('qaz_231') # None 含有下划线pat.fullmatch('n0passw0Rd')Out[4]: <re.Match object; span=(0, 10), match='n0passw0Rd'>
自定义类型
Python 使用关键字 class定制自己的类,_self__表示类实例对象本身。一个自定义类内包括属性、方法,还有建立类是系统自带的方法。
类(对象)
class dog(object)
以上定义了一个dog对象,它继承于根类object.
类的属性
def __init__(self, name, dtype): self.name = name self.dtype = dtype
以上定义了 dog 对象的两个属性:name, dtype,通过init,这个系统函数是每个对象自带的。
类的方法
def shout(self): print('I'm %s, type: %s' % (self.name, self.dtype))
注意,对象的方法参数必须要有 self,引用属性时,必须前面添加 self.name 等。
类的实例
xiaohuaDog = dog('xiaohua','quanType')
xiaohuaDog是 dog 对象的实例.
下面的 shout() 方法,是一个 public 方法,能在外部被其他模块调用。
def shout(self): pass
如果在 shout 前面添加2个_后,此方法变为私有方法,只能在内部使用。
属性前加 2 个_后,属性变为私有属性。通过此机制改变属性的可读性或可写性。
def get_type(self): return __type
通过get_type函数,就相当于 type 修改为可读、不可写的。
再看一个例子。
自定义一个最精简的Book类,它继承于系统的根类object
class Book(object): pass
使用 Python 自带的装饰器@property创建一个属性book_store_count:
@property def book_store_count(self): return self._book_store_count@book_store_count.setter def book_store_count(self, val): self._book_store_count = val
使用属性book_store_count:
python_intro = Book()python_intro.book_store_count = 100print('store_count of python_intro is {0}'.format( python_intro.book_store_count)) # store_count of python_intro is 100
关于创建类内属性的原理此处不展开,会在后面章节中通俗易懂的详细论述。
小结
今天学习了 Python 的四大基本数据类型,数值型,int, float 等;容器性,list, dict, tuple, set 等;字符型,str 与正则介绍;自定义类的基本语法规则,class, 属性和方法等。
今日内容有get吗,欢迎各位留言讨论!
下期预告:List和 tuple的基本操作
以上专栏均来自CSDN GitChat专栏《Python全栈60天精通之路》,作者zglg、Alicia,专栏详情可识别下方二维码查看哦!
五一假期特惠
仅限4月30日-5月5日
限时特价 59元
识别二维码立即订阅
每日一课 | 一文总结Python四大数据类型相关推荐
- Python 四大数据类型总结
点击上方"Python高校",关注 文末干货立马到手 基本数据类型 数值型 Python 中的数据皆是对象,比如被熟知的 int 整型对象.float 双精度浮点型.bool 逻辑 ...
- python四大数据类型_Python 四大数据类型总结
基本数据类型 数值型 Python 中的数据皆是对象,比如被熟知的 int 整型对象.float 双精度浮点型.bool 逻辑对象,它们都是单个元素.举两个例子. 前缀加 0x,创建一个十六进制的整数 ...
- python四大数据类型——python筑基系列
python数据皆是对象,例如熟知的int整型对象,float双精度浮点型对象,bool逻辑对象,都是单个元素. 前缀加0x,创建一个十六进制的整数:0xa5 # 等于十进制的165 使用e创建科学计 ...
- 每日一课 | Python数据可视化—如何做好启动准备(小白必读)
03 大家好,我是营长,昨天营长分享了数据科学"的基本概念,不清楚的小伙伴可戳这????每日一课|案列上手Python数据可视化 本期营长接着为大家分享Python数据可视化相关内容 这期分 ...
- python四大主流web框架
python四大主流web框架 转载自博客:https://www.cnblogs.com/an-wen/p/11330834.html --爱文飞翔 Python 四大主流 Web 编程框架 目前P ...
- python将列表转换为字符串_每日一课 | Python将文件读入列表
读取日志文件的Python示例,一行一行地进入列表. # With '\n', ['1\n', '2\n', '3'] with open('/www/logs/server.log') as f: ...
- python 声明变量类型_每日一课 | Python 检查变量的类型
在Python中,我们可以使用type()来检查变量的类型. num = "3.141592653589793238"print(type(num)) pi = float(num ...
- 字节数组转换为图片_每日一课 | Python 3 TypeError:无法将“字节”对象隐式转换为str...
将Python 2套接字示例转换为Python 3 whois.py import sysimport socket s = socket.socket(socket.AF_INET, socket. ...
- 每日一课 | Python数据可视化—如何分区和绘图
06 大家好,我是营长,昨天营长分享了数据科学"的知识点:,不清楚的小伙伴可戳这????每日一课|Python数据可视化-重新认识坐标系 本期营长接着为大家分享Python数据可视化相关内容 ...
最新文章
- mysql whrere 占位_【MySQL】(4)操作数据表中的记录
- 141 springmvc中 转发 与 重定向
- idea工程本地依赖_IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)...
- UVa LA 3882 - And Then There Was One 递推,动态规划 难度: 2
- js循环判断有无重复值_JavaScript中的while循环
- SAP CRM呼叫中心和Hybris Backoffice的轮询设计
- 微信公众号开发-接入
- treegrid.bootstrap使用说明
- python——文本简单可逆加密
- web前端基础(07style)
- 2016级算法第四次上机-B ModricWang的序列问题
- linux的O的字体让我满意那些
- VS 母版使用配置技巧
- c语言程序调试方法有哪些,c语言程序的调试方法有哪些
- 那些你可能不知道的 bilibili 奇技淫巧
- 数据结构易混点、易错点、题目(个人向)
- 软件复用及构件、C/S与B/S混合模型及实战项目技术简述
- solidworks的openGL选项是灰色的处理方法
- android 推流方案,Android 推流-录屏状态时获取推流信息
- OpenLayers中文文档2栅格重投影
热门文章
- js中的按位运算符详解‘‘ , ‘|‘, ‘^‘, ‘~‘, ‘<<‘, ‘>>‘, ‘>>>‘
- 五脏六腑是怎么运作的?五脏六腑是怎么运作的?
- 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域_拔剑-浆糊的传说_新浪博客...
- 一旦出现趋势大阳K线的股票,你就能买在起爆点
- Java 单边快排 与 双边快排
- linux 查看硬盘的uuid_linux blkid命令显示块设备属性查看硬盘UUID号
- html访问json字段,HTML如何获取JSON的数据并对其操作
- IBM N系列存储和NetApp FAS之间的对应关系
- 机器学习中对核函数的理解
- 【第19天】给定一个整数 n,请你打印出 n 层杨辉三角 | 杨辉三角的应用