Python的数据类型有多种,主要有数字,字符串,列表、元组,字典,集合

1.数字类型

python数字类型:

整型,如1,2

浮点数,如1.2  1.4E4

布尔型,True,False

复数,(-5+4j)

 

 

2.bytes类型

文本总是Unicode str类型表示

二进制数据由bytes类型表示

>>> str = "我爱北京天安门">>> print(str.encode())
b'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> byte = str.encode()  #将字符串编码成byte类型
>>> print(byte.decode()) #解码二进制byte类型为字符串
我爱北京天安门

 

 

3.字符串

字符串需要用引号引起来,可以使用单引号,双引号,三引号。字符串是不可变的。

字符串相关操作

#返回字符‘m’的索引
>>> print(name.find("m"))
0

#格式化字符串
>>> print(name1.format(name="alex",age=23))
my name is alex,age is 23

#以字典方式进行赋值
>>> print(name1.format_map({"name": "oldboy", "age": 29}))
my name is oldboy,age is 29

#判断是否是数字和字母
>>> print("1234dd".isalnum())
True

#判断是否是字母
>>> print("adbd".isalpha())
True

#判断是否是十进制
>>> print("123445".isdecimal())
True

#判断是否是整数
>>> print("123".isdigit())
True

#判断是否是合法的标识符
>>> print("-1A".isidentifier())
False

#按某个字符将其相连
>>> print("+".join(['1', '2', '3']))
1+2+3

#去掉字符串左右两边的空格
>>> print("\tAlex\t".strip())
Alex

#字符串替换
>>> print("alex li".replace('l','L'))
aLex Li

#split按某字符将其拆开以列表显示
>>> print("1+2+3+4".split("+"))
['1', '2', '3', '4']

#按”\n”将字符串进行拆分,以列表方式显示
>>> print("1+2\n+3+4".splitlines())
['1+2', '+3+4']

#以标题方式显示
>>> print("alex li".title())
Alex Li

 

 

4.列表

列表是python常用数据类型之一,以“[]”表示,列表的常见操作切片,列表解析

#定义列表
>>> names = ["Alex","Hudaohong","Oldboy","tom"]

#切片操作
#获取列表的第1元素
>>> names[1:2]
['Hudaohong']

#获取列表第0,1元素
>>> names[:2]
['Alex', 'Hudaohong']

#-1指最右边一个元素
>>> names[-4:-1:2]
['Alex', 'Oldboy']
>>> names[:-1:2]
['Alex', 'Oldboy']

#向列表中追加元素
>>> names.append("Lucy")
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'tom', 'Lucy']

#向列表中插入元素
>>> names.insert(3,"Tom")
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom', 'Lucy']

#删除元素,默认是删除最后一个元素,如果删除的元素不存在,会报异常
>>> names.pop()
'Lucy'
>>> names.pop("Lucy")
Traceback (most recent call last):
  File "", line 1, in 
    names.pop("Lucy")
TypeError: 'str' object cannot be interpreted as an integer

#返回列表元素的索引
>>> names[names.index("Tom")]
'Tom'

#统计元素个数
>>> names.count("Tom")
1

#将列表反转
>>> names
['tom', 'Tom', 'Oldboy', 'Hudaohong', 'Alex']
>>> names.reverse()
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom']

#排序
>>> names.sort()
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom']

 

 

列表的复制有浅复制与深复制之别

>>> import copy
>>> names = ["Alex","Hudaohong","Oldboy","Tom",["Jim","Lucy"]]
#浅复制
>>> names1 = names.copy()
#深复制
>>> names2=copy.deepcopy(names)
#修改列表第2个元素
>>> names[1] = "胡道宏"#修改嵌套列表的第1个元素
>>> names[4][0]="JIM">>>#显示打印结果
>>> print("{name} is names".format(name=names))
['Alex', '胡道宏', 'Oldboy', 'Tom', ['JIM', 'Lucy']] is names
>>> print("{name} is names1".format(name=names1))
['Alex', 'Hudaohong', 'Oldboy', 'Tom', ['JIM', 'Lucy']] is names1
>>> print("{name} is names2".format(name=names2))
['Alex', 'Hudaohong', 'Oldboy', 'Tom', ['Jim', 'Lucy']] is names2

 

 

列表解析

列表解析是根据已有列表高效快速生成新列表的方式,它是迭代机制的一种应用

语法结构
[expression for iter_var in iterable]
[expression for iter_var in iterable if cond_expr]
>>> l1=[1,2,3,4]
#列表解析生成新的列表
>>> l2 = [I ** 2 for I in l1]
>>> l2
[1, 4, 9, 16]
>>> l3 = [I ** 2 for I in l1 if I> 2]
>>> l3
[9, 16]

 

 

5.字典

Python中的字典是无序的,是以键值对的形式存在,定义字典是需要用”{}”,如{”name”:”Tom”,”age”:23}

#定义字典
>>> info = {"stu01":"Tom","stu02":"Lucy","stu03":"Jim"}#通过键值获取字典值
>>> info["stu01"]'Tom'
#增加
>>> info["stu04"] = "Baby"
#删除
>>> del info["stu04"]
>>> info.pop("stu03")
'Jim'
#如果某个值不在字典中,不会报异常
>>> info.get("stu04")
>>> info.get("stu01")
'Tom'
#判断个值是否在字典中
>>> print("stu01" in info)
True
#update合并字典,如果有同名字典会覆盖
>>> dictb={"stu100":"zhangsan","stu02":"LiSi","stu101":"WangWu"}
>>> info.update(dictb)
>>> info
{'stu01': 'Tom', 'stu02': 'LiSi', 'stu100': 'zhangsan', 'stu101': 'WangWu'}
#以元组方式显示字典的键值
>>> info_c = info.items()
>>> print(info_c)
dict_items([('stu01', 'Tom'), ('stu02', 'LiSi'), ('stu100', 'zhangsan'), ('stu101', 'WangWu')])
#初始化一个新字典
>>> dictC=dict.fromkeys([6,7,8],[1,{"name":"Boy"},444])
>>> dictC
{6: [1, {'name': 'Boy'}, 444], 7: [1, {'name': 'Boy'}, 444], 8: [1, {'name': 'Boy'}, 444]}
# 将会3个字典中的name都改了,类似于浅复制
>>> dictC[7][1]["name"] = "girls"
>>> dictC
{6: [1, {'name': 'girls'}, 444], 7: [1, {'name': 'girls'}, 444], 8: [1, {'name': 'girls'}, 444]}
#循环字典,推荐使用基本方式
>>> for key in dictC:print(key,dictC[key])6 [1, {'name': 'girls'}, 444]7 [1, {'name': 'girls'}, 444]8 [1, {'name': 'girls'}, 444]
#数据量大时不适合
>>> for k,v in info.items():print(k,v)
stu01 Tom
stu02 LiSi
stu100 zhangsan
stu101 WangWu

 

 

6.集合

集合set
   可以去重
    无序
    关系测试: 交集,并集,差集等
集合操作
#集合可以去重
>>> list01 = [1, 4, 5, 7, 3, 5, 1, 9]
>>> list01= set(list01)
>>> list01
{1, 3, 4, 5, 7, 9}
>>> list02=set([2,4,6,8,3])
#交集
>>> print(list01.intersection(list02))
{3, 4}
>>> print(list01&list02)
{3, 4}
#并集
>>> print(list01.union(list02))
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> print(list01 | list02)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
#差集,list01中有,list02中没有
>>> print(list01.difference(list02))
{1, 5, 9, 7}
>>> print(list01 - list02)
{1, 5, 9, 7}
#子集:判断list03是否list01的子集
>>> list03 = set([1,3,7])
>>> print(list03.issubset(list01))
True
#判断list01是否list3的子集
>>> print(list01.issubset(list03))
False
# 对称差集,两个集合中互为没有的>
>> print(list01.symmetric_difference(list03))
{4, 5, 9}
>>> print(list01 ^ list03)
{4, 5, 9}
#判断两个集合,如果没有合集则返回True
>>> list04=([5,6,8])
>>> print(list03.isdisjoint(list04))
True
#添加
>>> list01.add(99)
>>> list01.update([88,77,55])
>>> print(list01)
{1, 3, 4, 5, 99, 7, 9, 77, 55, 88}
#删除集合元素
>>> list01.pop()
1
#remove删除时不返回元素
>>> list01.remove(77)
>>> list01
{3, 4, 5, 99, 7, 9, 55, 88}