学习目标:将python所涉及的数据类型、数据结构弄清楚

python作为面向对象编程语言。那么代表数据的对象都有哪些呢?

在这里我把他们分为内置数据类型文件数据类型,第三方常用数据结构自定义的数据结构四个方向去介绍。

  1. 内置数据类型有7种:

    数值型:整型int, 浮点数(小数)float,复数complex
    文本型:字符与字符串str
    序列型:列表list,元组tuple,序列对象range
    集合类型:集合set,不可变集合frozenset
    布尔类型:布尔bool
    二进制类型:字节数组bytearray,不可变字节(字节串)bytes,对象内存存储memoryview。

    以上内置数据类型用于编程当中,为数据表示,也就是说程序结束,数据也将不存在。所以他们都不是持久化对象。那么数据对象持久化应该是下面所说的文件数据类型。

  2. 文件数据类型
    常见文件数据类型:XMLJSON,shelve, pickle和open打开的其他文件。
    以及数据库(db文件):Mysql,MongoDB, SQLite 。

  3. 常见数据结构在python中的体现
    常见数据结构:双端队列deque, 栈,链表(顺序链表,双向链表,循环链表)

  4. 自定义的数据结构
    class Stack:
    class LinkList


学习内容:内置数据类型

在学习内容之前,推荐先了解以下内置函数:type,dir,help。便于编程中查看数据类型和对象的使用方法。
dir(obj):返回obj的属性和方法列表
type(obj): 返回对象类型
help() 函数用于查看函数或模块用途的详细说明

提示:前面也说了,内置的数据类型重在数据表示,就是编程中操作的时候使用。

关于内置数据类型,当我们需要做一些运算的时候,以什么样的形式表示变量,就涉及到常用的数据类型int, float, complex, str;当我们需要在数据库中存储记录,以什么样的形式表示记录呢?通常使用内置数据类型的列表,字典,元组,集合就能满足需要。

数值型内置对象,int float complex
用dir了解这三个类型,就可以轻松知道它们的用法和属性。
实例:python环境中输入:dir(int)可以查看到int对象的方法和属性。我们把每一个属性都过一遍,方便我们以后查看对象的属性方法,或自定义对象设置属性和方法做参考。

# dir(int)
dir(1)
Out[2]:
['__abs__','__add__','__and__','__bool__','__ceil__','__class__', '__delattr__', '__dir__', '__divmod__','__doc__','__eq__', '__float__','__floor__','__floordiv__','__format__','__ge__','__getattribute__','__getnewargs__', '__gt__','__hash__','__index__','__init__','__init_subclass__','__int__','__invert__','__le__','__lshift__','__lt__','__mod__','__mul__','__ne__','__neg__','__new__','__or__','__pos__', '__pow__','__radd__','__rand__', '__rdivmod__','__reduce__', '__reduce_ex__','__repr__', '__rfloordiv__','__rlshift__','__rmod__','__rmul__','__ror__','__round__','__rpow__','__rrshift__','__rshift__','__rsub__','__rtruediv__','__rxor__','__setattr__','__sizeof__','__str__','__sub__','__subclasshook__','__truediv__','__trunc__', '__xor__','bit_length','conjugate','denominator','from_bytes','imag','numerator','real','to_bytes']

我们以int类为例,看一下里面的魔法方法吧!
将dir返回的结果为列表,里面有70个元素,我们给里面的方法和属性分个类:
定义过类,我们就知道这两个魔法方法:支持创建类方法__new__(),支持初始化实例方法__init_()
魔法方法就是被重写成特殊符号的方法,比如常见的,+ - * / // & | ^加减乘除与或非等,对象支持这些方法就表示定义对象的时候就把方法写进类定义里了。简单来说。定义方法的时候一种形式,调用方法用另一种符号代替,让代码更加立体直观。就是魔法方法了。

魔法方法是python内置方法,不需要主动调用,存在的目的是为了给python的解释器进行调用,几乎每个魔法方法都有一个对应的内置函数,或者运算符,当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法,可以理解为重写内置函数。

支持类访问__class__,使用方式type(对象)返回该对象的类。
支持设置属性:__setattr__
支持查看占用空间:__sizeof__
支持打印方法__repr__,
__format__方法里面定义了对象的格式:x.__ format__(format_spec) ———— format(x, format_spec)
支持查看文档__doc__,通常我们定义类的时候会在开头用三引号引一段文字来介绍类的作用功能信息,使用doc属性可以查看
支持删除属性方法 __delattr__(),使用方式:del 某属性
支持查看对象的方法和属性的方法 __dir__(),使用方式dir()查看
支持查看指定属性的值'__getattribute__',使用方法:对象.属性
支持求hash散列值__hash__,使用方法:hash(obj)
支持运算方法
支持求绝对值__abs__,使用方式abs(对象)
支持加法运算__add__使用方式:+__radd__支持x += 1
支持减法运算__sub__使用方式:-__rsub__支持-=
支持乘法运算__mul__使用方式:*__rmul__支持*=,
支持取模__mod__使用方式%__rmod__支持%=
支持除法运算__truediv__使用方式:/__rtruediv__支持/=,
支持除法得余数和商运算__divmod__,使用方式:divmod(),返回元组(商,余数);__rdivmod__为:x= divmod(x, y)
支持地除法或叫整除__floordiv__,使用方式://,返回值去掉小数;__rfloordiv__支持//=
支持N次方运算__pow____rpow__表示支持**=
支持富比较方法运算:小于__lt__、大于__gt__、小于等于__le__、大于等于__ge__、等于__eq__和不等于__ne__六个方法,使用操作运算符为:<、>、<=、>=、==和!=
支持按位的逻辑运算:与运算__and__使用方式&and; __rand__,表示支持&=
支持或运算__or__使用方式:|or;__ror__,表示支持|=
支持异或运算__xor__,使用方式:^__rxor__,表示支持^=
支持取反运算__invert__,使用方式~;

支持布尔运算
支持布尔方法__bool__()返回True False,使用:对象直接当作条件使用

约数
支持类四舍五入取整运算: 向上__ceil__()返回不小于该对象的整数’;支持向下取整运算__floor__,返回小于等于该对象的最大值。
支持四舍五入运算:__round__
这几个在float类中作用更大,int类里没什么作为。

支持移位操作
左移__lshift__使用方式:<<;__rlshift__表示支持<<=
右移'__rshift__'使用方式:>>__rrshift__表示支持>>=

__init_subclass__

__subclasshook__

支持正号:__pos__:其中obj是实现__pos__()的泛型对象。
支持负号:__ neg__
x.__ neg__() ———— -x
x.__ pos__() ———— +x
可能被其他包的函数用到的支持方法
x.__ trunc__() ———— math.trunc(x)
a_list[x.__ index__()] ———— a_list[x]
x.__ reduce__() ———— pickle.dump(x, file)
x.__ reduce_ex__(protocol_version) ———— pickle.dump(x, file, protocol_version)
x.__ getnewargs__() ———— x = pickle.load(fp)

支持类型转换方法:转换成浮点类型__float__,转换成整形__int__,转换成字符串__str__from_bytes, to_bytes类方法,经常用到就不多说。

实例方法
‘bit_length’:长度
‘conjugate’,'共轭复数计算

属性
denominator,对象的分母
numerator,对象的分子
imag,对象的虚部
real,对象的实部

以上类型int的属性和方法就介绍完毕,其他内置内型,同理可查。掌握了查询方法,理解了对象的作用,可操作空间就大了。自己定义类型的时候也就得心应手。


学习过程:代码验证,调试

提示:以上大部分方法和属性的测试代码

# Begin to show your code!
import time
import math
# 创建对象
num = -1
num_c = int(2)# 继承
class IntData(int):def __init__(self, x):super().__init__()self.work = "起来"passnum_d = IntData(2)  # 创建对象# dir查看对象的方法和属性
check_1 = dir(1)'''
['__abs__', '__add__', '__and__', '__bool__', '__ceil__','__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__','__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__','__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__','__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__','__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
'''
# 访问类属性,得到类
msg1 = num.__class__  # <class 'int'># 删除属性__delattr__
del num_d.work# 查看对象的属性方法,返回列表
# msg = num.__dir__()
msg = dir(num)# 支持求绝对值'__abs__',使用`abs(对象)`
num_abs = abs(num)
# 支持加法运算`__add__`,
num_add = num + num_c
# 支持除法得余数和商运算`__divmod__`,
num_div2 = num.__divmod__(num_c)
num_div3 = divmod(num, num_c)num_div1 = num/num_c# 支持富比较方法运算:小于__lt__、大于__gt__、小于等于__le__、大于等于__ge__、等于__eq__和不等于__ne__六个方法,
# 使用操作运算符为:<、>、<=、>=、==和!=
num_lt = num < num_c  # 返回bool值# 支持逻辑与运算`__and__`使用方式`&`;支持或运算`__or__`使用方式`|`;;支持异或运算`__xor__`
num_and = num.__and__(num_c)
num_and2 = num & num_c
num_and3 = num and num_c
num_or = num | num_c
num_or2 = num or num_c
num_xor = num ^ num_c# 支持布尔方法`__bool__()`返回`True False`,使用:`对象直接当作条件使用`
if num:print(f'{num} is {bool(num)}')
# 支持类四舍五入取整运算`__ceil__()`返回不小于该对象的整数',
num_ceil1 = num.__ceil__()# 支持求hash散列值`__hash__`
num_hash = hash(num)# 支持泛型对象
print(+1, -1)# '__sizeof__'
mum_size = num.__sizeof__()
# 'bit_length':长度
num_bit = num.bit_length()# 'conjugate', 共轭复数
num_con = num.conjugate()
# denominator:分母
num_den = num.denominator
# 'numerator',分子
num_num = num.numerator
# 'from_bytes',类方法# 'imag',
num_im = num.imag# 'real',\
num_real = num.real
# 'to_bytes'
num_to = bytes(1)time.sleep(2)

调试结果

从今以后以后,编程中拿不准的方法在查询源码的时候,是不是就没那么头痛了。以小见大嘛~


学习产出:当面试笔试遇到到以下题目时,你知道怎么回答吗?

提示:个人笔记

1、 技术笔记 1 篇

0. 论dir的重要作用
数据类型 数据结构
1. 你所了解的常用字符串,字符方法
切片:,split,组合join,+,
格式化输出%s,{}format,f-string
字符串大小写lower,
字符编码解码ord,
替换replace
去除空格2.字典的增删改查更新方法
dict. clear()
dict.get()
dict.setdefault()
pop(key)
popitem()
update(dict)3.集合和元素关系属于in;a集合与b集合的关系子集a.issubset(b),b<a,等于==,交集a.intersection(b),&,并集a.union(b),|,补集差集a.diffrence(b),^。
集合方法:add(元素),update(集合)
pop,remove(元素),集合.clear()4 列表常用方法
扩展extend,+
增添append,删除pop,remove,5. 列表解析式
power=[x**2 for x in range(1,10)]
得到的是一个列表6.  生成器generator,创建生成器的两种方式?
函数构成生成器
def gener():yield 1
元组解析式构成生成器
gen =(i**2 for I in range(1,10))7. 迭代器iterators和可迭代对象
iter(可迭代对象)= 迭代器,同时含有__iter__和__next__
可迭代对象,列表,元组,字典,字符串等含有__iter__的对象。8. 双端队列deque
方法:增添append,appendleft;删pop,popleft。9. 堆栈
class Stack10.  链表(节点,顺序链表,双向链表,循环链表)
class Node
class LinkLIst11.  文件open
模式:r,r+,w,w+,a,a+,rb,rb+,wb,wb+,ab,ab+
方法:read(size),readline(size),readlines(),f. tell(),f. seek()
特点:一次性读入内存,所以接近或大于内存的文件限制使用。
大文件读取推荐fileinput
import fileinput
for line in fileinput. input():
11.  XML
12.  JSON
13.shelve,pickle
14.数据库:补上
15. zip()并行迭代,以最短迭代对象长度为止。
16. Python中注释符号有几种?注释的位置一般有几种?
两种:井号# 和三单引号"'    '"
两种:被注释代码头顶,或该行代码末尾。
17. 单引号,双引号,三单引号,三引号的作用
字符串"  "  和 '  '
注释 三单
__doc__长串文本,换行的字符串  用三引号
18.对象的类型,type函数返回值是什么,有什么作用?
type函数返回该对象的类
比如:type("11")和type(23)
<class str>
<class int>
功能用途,可以同化:type(23)("11")
可将数字字符串整数化
19. isinstance(1, int)返回True

python数据类型与数据结构--内置数据类型相关推荐

  1. 【Python】第二章 内置数据类型

    该文章内容整理自<Python编程:从入门到实践>.<流畅的Python>.以及网上各大博客 文章目录 内置数据类型 变量 基本运算 特殊值 布尔值 数字类型 序列 字符串 转 ...

  2. [Python学习第一天]内置数据类型介绍,万物皆对象!

    1.内置布尔类型  (True and False.  非零值可代表True,零值可以代表False.) 这里的零值和非零值我把它广泛理解,而不是像Java那样int=0 之类的 这里的零值包括:数值 ...

  3. Python数据结构与算法(1.2)——Python基础之变量与内置数据类型

    Python数据结构与算法(1.2)--Python基础之变量与内置数据类型 0. 学习目标 1. Python 程序的运行 1.1 Python 交互式解释器 1.2 Python 程序脚本 2. ...

  4. 数据结构(Python版):Python内置数据类型

    1. Python内置数据类型 python内置数据类型中的列表list和字典dict,可作为Python语言中实现各种常用数据结构的基石,后续各种数据结构均基于他们实现.两种数据类型的常见(操作)方 ...

  5. python类型-Python基本内置数据类型有哪些?

    玩蛇网Python学习平台在这里会和大家讲下Python初学者,最常用到的Python基本内置数据类型有哪些. 在Python程序中,每个数据都是对像,每个对像都有自己的一个类型.不同类型有不同的操作 ...

  6. 以下不是python内置数据类型的是_以下不是python内置数据类型的是

    以下不是python内置数据类型的是 答:float 关于分娩先兆,下述哪项是错误的 答:初产妇见红血量比经产妇多 中国提出的________理念,为世界和平繁荣提供了新路径,并被写入联合国决议 答: ...

  7. python3字典升序排序_python3从零学习-4.2、内置数据类型

    内置标准类型: * Boolean(布尔) * Number(数字) * String(字符串) * List(列表) * Tuple(元组) * Sets(集合) * Dictionary(字典) ...

  8. 1.1内置数据类型概述

    1.为什么使用内置数据类型? 2.Python核心数据类型 3.数据类型的不可变与可变特性 4.序列与散列的概念: 5.数据类型的检查方法 6.寻求帮助 1.为什么使用内置数据类型? 1 -(1)内置 ...

  9. orm设置bool型 python_python基础教程之基本内置数据类型介绍

    Python基本内置数据类型有哪些 一些基本数据类型,比如:整型(数字).字符串.元组.列表.字典和布尔类型. 随着学习进度的加深,大家还会接触到更多更有趣的数据类型,python初学者入门时先了解这 ...

最新文章

  1. Squid3反向代理安装与配置
  2. html自定义实现文本编辑器,自定义开发富文本编辑器(Javascript实现点击插入内容到textarea光标处)...
  3. pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...
  4. 合理修改3389端口
  5. php求未知数怎么求,PHP的-输入未知数的字段到MySQL-为此的最佳...
  6. php中调行高代码_单元格行高怎么设置
  7. Missing the OpenSSL lib
  8. 判断101-200之间有多少个素数,并输出所有素数。
  9. android在线root,KingRoot全球率先实现Android 7.0一键 Root
  10. CISCO路由AAA的Easy ×××
  11. HoloLens 2开发:使用Gaze开发,视线小球不停向眼端移动
  12. 8.15 号 程序 循环结构作业的代码
  13. Apache Curator入门实战
  14. PDF文件转MOBI怎么转?在线操作轻松完成
  15. ad10搜索快捷键_ad快捷键有哪些 ad快捷键汇总
  16. 苹果Mac突然没有声音,3 种方法快速解决没声音的问题
  17. Java开发,需要学习什么内容?
  18. kali 安装volatility_linux网络命令 【Volatility】取证实战
  19. 第十七届全国大学生智能汽车竞赛讯飞-家庭服务机器人挑战赛全国总决赛规则
  20. 夺宝奇兵 (优先队列 + 贪心 + 暴力枚举)

热门文章

  1. Window系统安装FFmpeg
  2. 服务器外包项目,个人接国外外包项目需要哪些技能
  3. c语言搜题答案软件软件,大学c语音搜题
  4. 金属结构保温板的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. \int_0^{+\infty} \frac{\sin x}{x}\mathop{}\!\mathrm{d}{x}
  6. MATLAB实现利用三个不共线的点绘制圆(包括圆心和半径的求解)
  7. 微信发朋友圈如何只发文字?
  8. 解决 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
  9. 用谷歌浏览器来当手机模拟器
  10. 键盘输入一个长方形的两个边长,输出该长方形的周长、面积和对角线。要用到Math类提供的数学方法。