一、介绍
按存储空间的占用分(从低到高):
数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
按可变不可变区分:
1、可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
2、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
进制:
1个二进制位是计算机里的最小表示单元
1个字节是计算机里最小的存储单位
二进制位=bit = 8bits
8bits = 1Byte = 1字节
1024Bytes = 1KB = 1KB
1024KB = 1MB = 100万字节 = 100万字符 = 1兆
1024MB = 1GB = 一部高清电影短片, 1080p 20分钟,
1024GB= 1TB
1024TB = 1PB
二、数字类型
整型int:
定义:age=10 #age=int(10)
用于标识:年龄,等级,身份证号,qq号,个数
在32位机器上,整数的位数为32位,范围为-231~2 31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,范围为-263~2 63-1,即-9223372036854775808~9223372036854775807
浮点型float:
定义:salary=3.1 #salary=float(3.1)
用于标识:工资,身高,体重
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意:从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,在长整数数据后面不加字母L也不会导致严重后果了。在Python3里不再有long类型了,全都是int。
复数型complex:
>>> x=1-2j
>>> x.real
长整形
在python2中(python3中没有长整形的概念):
三、bool 布尔
布尔值,一个True:真,一个False:假
计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真
四、字符串-string
概念
在python中,加了引号的字符就是字符串类型,python并没有字符类型。
作用:名字,性别,国籍,地址等描述信息
定义:在单引号双引号三引号内,由一串字符组成
多引号:作用就是多行字符串必须用多引号。
字符串相加其实就是简单拼接
注意1:字符串相加的效率不高,字符串+字符串,而是申请一个全新的内存空间存入2个字符串,相当字符串与字符串的空间被复制了一次。
注意2:只能字符串加字符串,不能字符串加其他类型。
常用功能
转换格式:
.str() #将非字符串表示为字符串
移除空白:
.strip() #把字符串开头和结尾的空格及/n,括号里可以指定清除内容
.rstrip() #清除末尾空白
.lstrip() #清除开头空白
拼接:
“+”拼接 #次数少适用
print(xx.join([“”,“内容”])) #xx 可以为特殊字符、空格,节省内存空间
空白:
/t #添加制表符
/n #换行符
分割:
“hello world”.split (“l”,x )
rsplit
查找:
xx.find(“x”,3 ) #返回找到的第一个值的索引,找不到返回-1
xx.rfind(“x”) #返回从右往左找到的第一个值的索引
xx.count(‘x’,2 ,8 ) #统计字符串2到8之间的x, 不指定范围则查找所有
长度:
xx.index(“x”) #返回内容长度,查找不到会报错
替换:
(“x”.replace(“y”)) #不会改变列表,只打印当前
显示位置:
xx.center(50 ,’-’) #向左间隔50,后面为填充
xx.ljust(50 ,’-’) #向右对齐
xx.zfill (50 ) #大于字符串长度的时候补0
格式化输出:
print (“hello %s”%s)
xx.format(30 )
print ("hello {name}, his age is {age}" .format({"name" :"egon" ,"age" :1000 }))
print ("hello {0}, his age is {1}" .format(34 ,"alex" ))
print ("HELLO\n wor\nld\n" .splitlines())
print ("HELLO\n wor\nld\n" .split ("\n" ))
判断:
xx.isalnum()
xx.isdecimal()
xx.isdigit()
xx.isnumeric()
xx.isalpha()
xx.isidentifier ()
xx.islower()
xx.isupper()
xx.isspace()
type (‘xxxx’) is str
xx.isinstance(‘xxxx’,str)
注意:最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景,如果要判断中文数字或罗马数字,则需要用到isnumeric
字母格式:
xx.endswith(‘x’) #以x为结尾区分大写,返回真假值
xx.capitalize() #第一个大写
xx.title() #每个单词首字母大写
xx.casefold() #全变成小写,支持拉丁文等
xx.lower() #全变成小写,只支持英文,常用方法
xx.upper() #全变成大写
设置t的长度:
print(“HELLOtworld”.expandtabs(30))
转义符:
‘let \‘xx’
r“\xxx”
占位符,如:%s、%d
%s字符串占位符:可以接收字符串,也可接收数字
print ('My name is %s,my age is %s' %('egon' ,18 ))
%d数字占位符:只能接收数字,否则会报错。
%f浮点数:
五、运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算。
算数运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
比较运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
赋值运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
位运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
逻辑运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
三者的优先级:or<and<not,同一优先级默认从左往右计算
and注解:
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。
如果布尔上下文中的某个值为假,则 and 返回第一个假值
or注解:
使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
如果所有的值都为假,or 返回最后一个假值
注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值
and-or结合使用:
结合了前面的两种语法,推理即可。
为加强程序可读性,最好与括号连用,例如:(1 and ‘x’) or ‘y’
成员运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
身份运算
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
#is比较的是id,而==比较的是值
运算符优先级
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
六、列表-list
在[]内用逗号分隔,可以存放n个任意类型的值,适用于存储在程序运行期间可能变化的数据集
可赋值:数据、字符串、列表、字典
常用操作:索引、切片、追加、删除、长度、切片、循环、包含
属于可迭代对象:能够进行for循环
函数
cmp(list1, list2)
如果比较的元素是同类型的,则比较其值,返回结果。
如果两个元素不是同一种类型,则检查它们是否是数字。元素相同返回0.
len(list)
max(list)
min(list)
list(seq)
number = list(range(2,21,2))
number = list(range(1,1000))
number = list(range(1,21,2))
summation = sum(number)
for number in range(1,21)
打印1-20的数字,range最后一个范围值不打印
方法
list .append(obj)
list .insert(index, obj)
index--对象 obj 需要插入的索引位置。obj--要插入列表中的对象
list .pop(obj=list [-1 ])
obj -- 可选参数,要移除列表元素的对象
list .remove(obj)
obj--列表中要移除的对象。按元素的值删除,只删除第一个重复的值
del dine_together[2 ]
dine_together.clear()
list [index]= NewValue
list .extend(seq)
print (set(index))
list .reverse()
print (sorted(list ))
print (sorted(list ,reverse=True ))
list .sort([func])
list .sort()
list .sort(reverse=True )
list .index(obj)
list .index(ind1:ind2)
list *expr
type(a)
for i in l:
切片:
print (list [1 :4 ])
print (list [:4 ])
print (list [-4 :])
list [::-1 ]
list [::2 ]
七、元组-tuple
存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读。修改、删除元组变量,必须修改时需重新赋值
作用:协同作业时不能随意更改,更改需要list(xx)转成列表
常用操作:索引、切片、循环、长度、包含
dir:显示所有方法,只读.明确的表示 元组里存储的数据是不应该被修改的;
list( tuple元组) 变成列表,tuple(list列表) 变成元组
函数
cmp(tuple1, tuple2)
len(tuple)
max(tuple)
min(tuple)
tuple(list )
索引:
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
注意:因为括号()既可以表示tuple,又可以表示数学公式中的小括号。
所以,如果元组只有1个元素,就必须加一个逗号,防止被当作括号运算
八、字典-dict
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值。字典是无序的特性。
定义:key必须是不可变类型,value可以是任意类型
常用操作:索引、新增、删除、(键、值、键值对)、循环、长度
函数:
cmp(dict1, dict2)
如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1
len(dict)
str(dict)
type (dict)
方法:
dict.clear() # 删除字典内所有元素
dict.copy() # 返回一个字典的浅复制
dict.fromkeys(seq[, val])
#创建一个新字典,以序列 seq 中元素做字典的键,value为字典所有键对应的初始值,该方法返回列表。
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值
dict.get (key,default =None) # 返回指定键的值,如果值不在字典中返回默认值None
key -- 字典中要查找的键。
default -- 如果指定键的值不存在时,返回该默认值值
dict.has_key(key) # 如果键在字典里返回true,否则返回false
dict.items() # 返回可遍历的健值对(键, 值)列表,元组数组
dict.keys() # 以列表返回一个字典所有的键
keys方法也可以确定这个键在不在字典中
dict.setdefault(key, default =None)
# 和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值.
default -- 键不存时,设置的默认键值
dict.update(dict2) # 把字典dict2的键/值对更新到dict里
dict.values() # 以列表返回字典中的所有值,不包含任何键
pop(key[,default ])
# 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
key: 要删除的键值
default : 如果没有 key,返回 default 值
popitem() # 随机返回并删除字典中的一对键和值
sorted() #按顺序遍历字典中所有的键,按照字母顺序排序
#for i in sorted(list.keys())
案例
Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
九、集合-set
集合-set
可以包含多个元素,用逗号分割,集合的元素遵循三个原则:
1、每个元素必须是不可变类型(可hash,可作为字典的key)
2、没有重复的元素
3、无序
名词解释:
交集 两个都有
差集 在列表a里有,b里没有
并集 把两个列表里的元素合并在一起去重,天然去重
作用:关系测试(无序的),交集、差集、并集(合并去重复)
集合符号简化
1、交集:.intersection()
2、差集:.different()
3、对称差集:.symmetric_difference()
4、并集:.union()
5、父集:>,>=
6、子集:<,<=
常用操作
增:
dict .update () #把()中的合并到.之前的集合中,会改变集合
dict .add () #在集合中添加元素
dict .append () #用于在列表末尾添加新的对象
dict .difference_update () 把差集去除来存到.前的集合中
删:
dict.clear() #删除字典内所有元素
dict.discard() #删除 元素不存在不会报错
dict.popitem() #随机返回并删除字典中的一对键和值
dict.pop(key[,default ])
#删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
输出、判断:
dict.values() #以列表返回字典中的所有值
dict.get(key, default =None) #返回指定键的值,如果值不在字典中返回default值
dict.copy() #返回一个字典的浅复制
dict.items() #以列表返回可遍历的(键, 值) 元组数组
dict.has_key(key) #如果键在字典dict里返回true,否则返回false
dict.issubset() #判断()里的是否为.前的子集
dict.issuperset() #超集、父集,可以用<、> 表示
dict.isdisjoint() #两个集合没有交集返回为true
特殊常用
dict.discard ()
cmp(dict1, dict2)
len(dict)
str(dict)
type (variable)
本文:Python中序列、列表、元祖(数组)、集合、字典, 数据类型总结,实例详解
Related Posts
python的字典dirc和json的区别, dict(或对象)与json之间的互相转化 工作中和其他语言的工程师交流,合作与联调中经常会涉及到数据的传输,这个数据的传输通常为json字符串,这个json格式数据和python自身的dict数据对象非常像,所以很自然的会思考这两者究竟区别在哪里? 首先,两者不一样 区别 Python 的字典是一种数据结构,JSON 是一种数据格式。 json 就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构的特征。而…