List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用" [ ] "标识,是 python 最通用的复合数据类型。
列表对象 = [元素1, 元素2, 元素3, …… , 元素N, ]
list01=[0,1,'HTML',True,[0,1]]
print(list01)#[0, 1, 'HTML', True, [0, 1]
列表对象 = list(range(stop))
Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
range()参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
list2=list(range(10))
print(list2)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list2=list(range(3,10))
print(list2)#[3, 4, 5, 6, 7, 8, 9]
list2=list(range(3,10,2))
print(list2)#[3, 5, 7, 9]
列表中值的切割也可以用到 [头下标 : 尾下标 : 步长] ,就可以截取相应的列表。
从左到右下标索引默认 0 开始,从右到左下标索引默认 -1 开始,下标可以为空表示取到头或尾。
常用函数有:
.count(obj) : 统计某个元素在列表中出现的次数;
.index(obj) : 从列表中找出某个值第一个匹配的索引位置;
len(list) : 获取列表元素的个数;
max(list) : 获取列表中的最大值;
min(list) : 获取列表中的最小值;
list2=list(range(10))
print(list2)
print(list2[0],list2[-1])#0 9
print(list2[2:8])#[2, 3, 4, 5, 6, 7]
print(list2[2:8:2])#[2, 4, 6]
print(list2.count(2))#1
print(list2.index(2))#2
print(len(list2),min(list2),max(list2))#10 0 9
所谓的更新指的是对列表元素的 重新赋值、删除、添加等相关操作。
常用的函数:
**.append(obj) :**在列表末尾添加一个元素;
.insert(index, obj) : 向指定位置前序添加一个元素
.remove(obj) : 移除一个指定的元素;
.reverse() : 反向列表中的元素;
.sort() : 对列表进行排序;
常用运算符:
+(拼接列表)
*(浅拷贝只拷贝了列表的“引用”,里面的内容其实是指向的同一个东西,修改其中一个元素时,后面的元素也发生了改变)
list1=['HTML','CSS','JavaScript','XML']
list1.append('python')
print(list1)#['HTML', 'CSS', 'JavaScript', 'XML', 'python']
list1.insert(2,'Hello')
print(list1)#['HTML', 'CSS', 'Hello', 'JavaScript', 'XML', 'python']
list1.remove('CSS')
print(list1)#['HTML', 'Hello', 'JavaScript', 'XML', 'python']
list1.reverse()
print(list1)#['python', 'XML', 'JavaScript', 'Hello', 'HTML']
list1.sort()
print(list1)#['HTML', 'Hello', 'JavaScript', 'XML', 'python'] 根据ASCII排序
print(list1+list(range(3)))#['HTML', 'Hello', 'JavaScript', 'XML', 'python', 0, 1, 2]
print(list(range(3))*2)#[0, 1, 2, 0, 1, 2]
“ [ ] ”标识,是典型的引用操作,传址操作。
“ [:] ”标识,是典型的赋值操作,传值操作 。
list_1=list(range(4))
list_2=list_1
print(id(list_1))#1590116560960
print(id(list_2))#1590116560960
list_2=list_1[:]
print(id(list_2))#1590116554048
Tuple(元组)类似于List(列表)。元组不能二次赋值(元组内的元素不允许更新),相当于只读列表。元组用“ ( ) "标识。内部元素用逗号隔开。
组对象名称 = ( 元素1, 元素2, ……, 元素N )
tup1=(1,'HTML',[1,2,3],True)
print(tup1)#(1, 'HTML', [1, 2, 3], True)
元组与列表的所有操作基本类似,唯一不一样的地方是,元组的元素不允许被修改。
tup2=tuple(range(5))
print(tup2,type(tup2))#(0, 1, 2, 3, 4) <class 'tuple'>
tup2[1]=2#错误,不能修改
'''
tup2[1]=2
TypeError: 'tuple' object does not support item assignment
'''
同列表
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。
字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用“{ }”标识。字典由索引(key)和它对应的值value组成,是一个典型的“k-v值 ”数据结构。
字典对象名称 = { }
字典对象名称 = { key1 : value1, key2 : value2, …. , keyN : valueN }
dic1={}
dic1[0]='zhangsan'
dic1[1]='man'
print(dic1)#{0: 'zhangsan', 1: 'man'}
dic2={'name':'zhangsan','age':18,'high':1.78}
print(dic2)#{'name': 'zhangsan', 'age': 18, 'high': 1.78}
k-v结构一般情况下在操作访问的时候都会使用key索引进行每个元素的读取操作。
由于key索引键会被频繁访问,因此索引键key存放在Stack栈内存中,而value值则存储在Heap堆内存中。且字典是随机存储形式,无序结构。
字典对象名称[ key ] #访问key对应的value值
字典对象名称.keys #访问当前字典所有key索引键
字典对象名称.values #访问当前字典所有valeus值
dic2={'name':'zhangsan','age':18,'high':1.78}
print(dic2)#{'name': 'zhangsan', 'age': 18, 'high': 1.78}
print(dic2['name'],dic2['age'],dic2['high'])#zhangsan 18 1.78
print(dic2.keys())#dict_keys(['name', 'age', 'high'])
print(dic2.values())#dict_values(['zhangsan', 18, 1.78])
从承载数据类型的结构角度看:Python的数据类型分为数字类型和非数字类型。
数字类型包括:整型、长整型、浮点型和复数型。
非数字类型包括:字符串、列表、元组和字典。
都可以使用切片、连接(+)、重复(*)、取值(a[ ])等相关运算。
截取方式相同:名称[头下标:尾下标]
下标是从0开始算起,可以是正数或者负数,下标为空则表示取到头或者尾
开始截取时,包含了下边界,而截取到最大范围不包括上边界 [ ) 。
列表 可以直接赋值
元组不可以赋值
字典按照 dict[k]=v 的方式赋值
集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。
可以用大括号{}创建集合。注意:如果要创建一个空集合,必须用 set()而不是 {} ;后者创建一个空的字典。
集合对象名称 = {元素1,元素2,…}
集合对象名称 = {‘abc’} 会将abc创建为{‘a’, ‘b’, ‘c’}
空集合:集合对象名称 = set()
book={'Math','Language','English','Math'}
print(type(book))#<class 'set'>
print(book)#{'Language', 'English', 'Math'}删除重复的
empyt_set=set()#创建空集合
empyt_dic={}#空字典
print(type(empyt_set),type(empyt_dic))#<class 'set'> <class 'dict'>
set1=set('abc')
print(set1)#{'a', 'c', 'b'}
基本操作:
.add(‘x’) # 添加一项
.update([0,1,2]) # 添加多项
num1=set(range(5))#创建一个数字集合
num2={1,3}#创建一个数字集合
print(num1,num2)#{0, 1, 2, 3, 4} {'o', 'h', 'l', 'e'}
a=num1|num2#并集
b=num1&num2#交集
c=num1-num2 # 差集(在num1中不在num2中)
d=num1^num2# 对称差集(项在num1或snum2中,但不会同时出现在二者中)
print(a,b,c,d)#{0, 1, 2, 3, 4} {1, 3} {0, 2, 4} {0, 2, 4}
num1.add(5)#添加一项
num2.update([6,7,8,'abc'])#添加多项
print(num1,num2)#{0, 1, 2, 3, 4, 5} {1, 3, 6, 7, 8, 'abc'}