python所学的知识还是太零碎了,准备花点时间整理一下知识点。就此开篇吧。
python中的标准数据类型有:
1 |
Number(数字) |
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
0x1Number(数字)
0x1.1数字类型的用处
数字数据类型用于存储数值。
0x1.2数字类型的创建与删除
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建:
1 |
var1 = 1 |
del语句删除一些对象的引用,其语法是:
1 |
del var1[,var2[,var3[....,varN]]]] |
通过使用del语句可以删除单个或多个对象的引用。例如:
1 |
del var1 |
0x1.3四种不同的数字类型:
1 |
int(有符号整型) |
a. int(整型)
在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
b. long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
c. float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
d. complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
小整数对象——小整型对象池
在实际编程中,数值比较小的整数,比如1,2,29等,可能会非常频繁的出现。而在python中,所有的对象都存在于系统堆上。想想?如果某个小整数出现的次数非常多,那么Python将会出现大量的malloc/free操作,这样大大降低了运行效率,而且会造成大量的内存碎片,严重影响Python的整体性能。
在python2.7乃至3.3中,将小整数位于[-5,257)
之间的数,缓存在小整型对象池中。
0x1.4数字类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
1 |
int(x) 将x转换为一个整数。 |
x 和 y 是数字表达式
以下实例将浮点数变量 a 转换为整数:
1 |
>>> a = 1.0 |
0x1.5数字运算
在整数除法中,除法 / 总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 //
1 |
>>> 17 / 3 # 整数除法返回浮点型 |
//得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。
1 |
>>> 7//2 |
可以使用 ** 操作来进行幂运算
1 |
>>> 5 ** 2 # 5 的平方 |
不同类型的数混合运算时会将整数转换为浮点数:
1 |
>>> 3 * 3.75 / 1.5 |
在交互模式中,最后被输出的表达式结果被赋值给变量 _
1 |
>>> tax = 12.5 / 100 |
0x1.6数学函数
1 |
abs(x) 返回数字的绝对值,如abs(-10) 返回 10 |
0x2String(字符串)
0x2.1字符串的用处
它是编程语言中表示文本的数据类型。
0x2.2字符串组成及截取
字符串或串(String)是由数字、字母、下划线组成的一串字符
我们可以使用引号( ‘ 或 “ )来创建字符串
Python的字串列表有2种取值顺序:
1 |
从左到右索引默认0开始的,最大范围是字符串长度少1 |
如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
比如:
1 |
s = 'i love python' |
s[2:6]的结果是love。(顾头不顾尾,或左闭右开)
0x2.3转义字符
1 |
\\ 反斜杠符号 |
0x2.4运算符
1 |
+ 字符串连接 |
0x2.5字符串格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
python字符串格式化符号:
1 |
%c 格式化字符及其ASCII码 |
格式化操作符辅助指令:
1 |
* 定义宽度或者小数点精度 |
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
1 |
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 |
也可以设置参数:
1 |
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com")) |
也可以向 str.format() 传入对象:
1 |
class AssignValue(object): |
下表展示了 str.format() 格式化数字的多种方法:
1 |
>>> print("{:.2f}".format(3.1415926)); |
此外我们可以使用大括号 {} 来转义大括号,如下实例:
1 |
print ("{} 对应的位置是 {{0}}".format("runoob")) |
0x2.6三引号
1 |
para_str = """这是一个多行字符串的实例 |
0x2.7Unicode 字符串
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串
0x2.8字符串内建函数
方法 | 描述 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
bytes.decode(encoding=”utf-8”, errors=”strict”) | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
encode(encoding=’UTF-8’,errors=’strict’) | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’ |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False.. |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
lower() | 转换字符串中所有大写字符为小写. |
lstrip() | 截掉字符串左边的空格或指定字符。 |
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
max(str) | 返回字符串 str 中最大的字母。 |
min(str) | 返回字符串 str 中最小的字母。 |
replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
rstrip() | 删除字符串字符串末尾的空格. |
split(str=””, num=string.count(str)) | num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
splitlines([keepends]) | 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
translate(table, deletechars=””) | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
upper() | 转换字符串中的小写字母为大写 |
zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
# 0x3Tuple(元组) |
元组是另一个数据类型,类似于List(列表)。
元组用”()”标识。内部元素用逗号隔开。
但是元组不能二次赋值,相当于只读列表。
操作实例与列表相似
0x3.1元组的应用场景
尽管可以使用for in 遍历元祖,但是在开发中,更多的应用场景是:
1 |
1.函数的参数和返回值,一个函数可以接受任意多个参数,或者依次返回多个数据 |
0x3.2元组的创建
创建空元组
1 |
tup1 = (); |
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
1 |
>>>tup1 = (50) |
0x3.3访问元组
元组可以使用下标索引来访问元组中的值,如下实例:
1 |
tup1 = ('Google', 'Runoob', 1997, 2000) |
0x3.4修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
1 |
tup1 = (12, 34.56); |
0x3.5删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
1 |
tup = ('Google', 'Runoob', 1997, 2000) |
0x3.6元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
0x3.7元素索引截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素
0x3.8元组内置函数
方法 | 描述 |
---|---|
len(tuple) | 计算元组元素个数 |
max(tuple) | 返回元组中元素最大值 |
min(tuple) | 返回元组中元素最小值 |
tuple(seq) | 将列表转换为元组 |
0x4List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
0x4.1列表的应用场景
尽管python 中的列表可以存储不同类型的数据,但是在开发中,更多的应用场景是:
1 |
1.列表存储相同类型的数据 |
0x4.2创建列表
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
0x4.3访问类表
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符
0x4.4更新列表
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示
1 |
list = ['Google', 'Runoob', 1997, 2000] |
0x4.5删除列表元素
可以使用 del 语句来删除列表的的元素 或remove()方法
1 |
list = ['Google', 'Runoob', 1997, 2000] |
0x4.6列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表
0x4.7列表函数
方法 | 描述 |
---|---|
len(tuple) | 计算元组元素个数 |
max(tuple) | 返回元组中元素最大值 |
min(tuple) | 返回元组中元素最小值 |
list(seq) | 将元组转换为列表 |
0x4.8列表方法 |
描述 | 方法 |
---|---|
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表 |
0x5Dictionary(字典)
字典(dictionary)是除列表以外Python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用”{ }”标识。字典由索引(key)和它对应的值value组成。
0x5.1字典的应用场景
1 |
1.使用多个键值对,存储描述一个物体的相关信息–描述更复杂的数据信息 |
0x5.2访问字典里的值
把相应的键放入到方括号中
1 |
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} |
0x5.3修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
如下实例:
1 |
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} |
0x5.4删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
1 |
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} |
0x5.5字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
0x5.5字典的内置函数
方法 | 描述 |
---|---|
len(dict) | 计算字典元素个数,即键的总数。 |
str(dict) | 输出字典,以可打印的字符串表示。 |
type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
0x5.6字典的方法 |
方法 | 描述 |
---|---|
radiansdict.clear() | 删除字典内所有元素 |
radiansdict.copy() | 返回一个字典的浅复制 |
radiansdict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
radiansdict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
radiansdict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
radiansdict.keys() | 返回一个迭代器,可以使用 list() 来转换为列表 |
radiansdict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
radiansdict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
radiansdict.values() | 返回一个迭代器,可以使用 list() 来转换为列表 |
pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
popitem() | 随机返回并删除字典中的一对键和值(一般删除末尾对)。 |
0x6Set(集合)
集合(set)是一个无序的不重复元素序列。
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
和list比较,dict有以下几个特点:
1 |
查找和插入的速度极快,不会随着key的增加而变慢; |
而list相反:
1 |
查找和插入的时间随着元素的增加而增加; |
0x6.1集合的创建
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
0x6.2添加元素
语法格式如下:
1 |
s.add( x ) |
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等
1 |
s.update( x ) |
x 可以有多个,用逗号分开。
1 |
>>>thisset = set(("Google", "Runoob", "Taobao")) |
0x6.3移除元素
1 |
s.remove( x ) #元素不存在报错 |
0x6.4内置函数
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 删除集合中的元素,该元素在指定的集合中不存在。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
参考文章:
菜鸟教程https://www.runoob.com/python3/python3-data-type.html 廖雪峰的官方网站https://www.liaoxuefeng.com/wiki/1016959663602400/1017104324028448
python基础之五大标准数据类型https://www.cnblogs.com/snaildev/p/7544558.html
FROM :blog.cfyqy.com | Author:cfyqy
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论