温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python 数据类型

发布时间:2020-07-13 23:08:42 来源:网络 阅读:217 作者:wx5b87e6d52af84 栏目:编程语言

字符串(str):

字符串:一串不可变的字符序列
特殊字符:为了描述字符的一些状态,例如换行,缩进等,使用特殊的字符组合表示该类信息,例如:

\ \\ \n \t \r \' \b \f \v \oxxx \xyy \b
转义 \ 回车 制表符 回车 单引号 退格 换页 纵向制表符 8进制 16进制 二进制

防转义: r " string " 输出string原始字符,不会对其进行转义
例如:

print(  "d:\goproject\src\to_code"  )    # \t将会被转义为 tab
print( r"d:\goproject\src\to_code"  )   # 使用r " " 防止字符内部 \ 进行转义

\r\n : 回车换行符
通常连续出现表示对文本换行
\r 表示将光标返回行首,在依次进行显示,此时若光标后有字符,将会被重新覆盖,可以用它打印进度条
例1:

import time 
for i in range(101):
    time.sleep(i/90)
    print("进度:%d%%" %(i),end="\r")

例2:

import time 
for i in range(101):
    time.sleep(i/90)
    print("+" * i + "-"*(100-i), end=" \r ")

\x123 ,"\123",分别表示16进制,10进制

print("\123")      # 十进制 ascii码 123对应的 "s"
print("\x41\x42")  # 16进制41,42对应的字符 A和 B

变量:

常量:使用全大写变量名定义,提示开发者不要对其进行更改(默认约定)
字面常量:如:1, “abc”,等字符或数字类型数据

位运算
位运算使用数字的二进制形式进行运算;& (与); | (或) ;~(按位取反); ^(异或:相异出一)

原码,反码,补码

计算机储存形式:计算机储存的是数字的补码,最高位0为正,1为负数,底层计算时直接使用补码进行计算,计算结果进行输出是转换源码对应的二进制的数字。
补码:对于负数,原码的符号位不变,其他位按位取反,再加一得到补码,补码执行同样的操作可以得到原码

例如:计算10^9 和 10^-9

负数 字面值 反码 补码
-9 1000 1001 1111 0110 1111 0111
10 0000 1010 0000 1010 0000 1010
9 0000 1001 0000 1001 0000 1001

逻辑运算
or 和 and 的短路运算,0 and ---, 和 1 or 将会出现短路,停止计算and 或者 or 之后的内容,返回前面的值

运算符优先级:单目>双目,算数>位运算>身份>成员>逻辑

* 垃圾回收(GC)*
程序长时间运行造成大量的内存空洞,在需要大量连续内存时无法开辟空间而造成内存泄漏,Python使用了垃圾回收机制解决此类问题
垃圾回收:使用引用计数将未使用的内存碎片进行标记,当内存空洞达到一定的程度将触发垃圾回收机制,对碎片化的内存进行“”腾挪“”,提供连续的内存空间以供使用,在垃圾回收( GC )期间程序停止运行(stw)
引用计数 **:未使用的数据引用计数将会清零,垃圾回收机制将会对其进行清理;使用sys.getrefcount(x) 可以查看x对应值的引用计数

简单运算

math.floor(3.4) 
math.ceil(), 
int("b",16)
round(2.501) 
a = hex(100)   #  ==> "0x64" 字符串类型
a = 0x64         #  ==> 数字类型

isinstance(" ", (str,int,tuple)  # ==> True

列表 (list)

列表是连续的,可变的,线性数据结构,内部可以储存不同数据类型的数据
几种常见数据类型比较
列表:一串连续大小相等的内存空间,数据按顺序依次存储,Python中列表在空间沾满前会自动进行扩容。
特点:方便数据查询,使用索引可以直接定位元位置,增加、删除,插入(尤其在靠近列首位置)操作需要对后部元素进行挪动,效率较低。
链表:储存单元在内存中随机分布,上一个元素拥有下一个元素地址,只能通过上一个元素找找到先一个元素信息。
特点:方便插入 ,删除操作,时间复杂度为O(1),查询操作较为繁琐时间复杂度为 O(n)
:(stack) :LIFO,后进先出模型,例如,网页后退:每次打开新的网页会进行一次压栈操作,返回操作时返回到最后一次压栈前的效果,再例如撤销操作

队列:排队模型,队列之后唯一的出口和进口,按照排队前后顺序依次对数据进行操作。
服务器无法同时处理大量请求,将会对请求进行排队,按照顺序依次处理请求。

列表常用方法:

.index(value,start,stop) 时间复杂度n,性能低
.len(list) 元数据中已经记录 繁杂度1
.insert(index,value) 超出界限,尾部追加
.append() , 添加一个元素
.extend() , 如果是可迭代的对象会遍历出来添加多个
.sort(key=str, reverse =True ) 降序,临时啊转化类型进行比较,不会改变原来的类型
"+" 生成一个新的元素,新的列表空间太大
" " : [1] 3 = [1,1,1]; [[1] 3] = [[1,1,1]]; [[1]] 3 = [[1],[1],[1]]

简单类型和复杂类型:
当列表中储存复杂类型时,储存的是该数据的内存地址,使用其他变量对该地址下数据进行更改时,列表中数据会发射改变:

lis1 = [[100],[100],[100]] 和 lis2 = [[100]] * 3的区别
lis2中的[100]引用的是同一个对象

拷贝和深拷贝:

copy(shadecopy) 和 copy.deepcopy
copy浅拷贝:拷贝数据地址,引用的同一份数据,原始数据不会增加,数据引用计数加1
深拷贝:找到最底层的数据进行拷贝,并储存新数据的内存地址,数据值相同但是两份不同的数据可以使用id()查看地址

random

.shuffle([ ]) 洗牌打乱
.choice([ ])
.randint(1,3) 1-3区间整数
.randrange(1,3) 1-2区间
.sample([ ], k=), 列表中选K个“不同”的元素,不放回抽取模型
.choices([ ], k=) , 列表中选取K个元素, 放回抽取模型

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI