1,列表list
列表定义方式
lis1=[1,2,3,4]#一维数组
lis2=[1,2,3,[4,5,6]]#二维数组
依次多有多维数据,套几层就是几维数组
列表的取值可以通过下标来,下标都是从0开始,对列表的增删改查;
增:
msg = '你好'
name = ['andashu','cc','niuniu']
name.append(msg)#从最后面开始插入
name.insert(1,msg) #从指定位置插入,这个1代表下标
print(name)
改:
msg = '你好'
name = ['andashu','cc','niuniu']
name[1] = 'baby' #修改指定位置的值
查:
msg = '你好'
name = ['andashu','cc','niuniu']
print(name[0])#获取第一个元素
print(name[-1])#-1代表最后一个元素
删:
msg = '你好'
name = ['andashu','cc','niuniu']
name.remove('baby')#删除指定的值
del name[0]#删除指定位置的值
name.pop()#不传入下标的话,删除最后一个值,传入下标删除指定位置的值
name.clear()#清空列表
常用的内置方法:
name = ['andashu','cc','niuniu']
name2 = [1,2,3,4,['hehe','haha']]
print(name.index('niuniu'))#取索引
print(name.count('cc'))#取cc出现的次数
name.clear()#清空列表
print(name.sort())#排序,根据阿斯克码来排序
print(name.extend(name2))#扩展列表,也就是把name2的值加到name里面
name.reverse()#反转数组,会改变原数组的值
list的取值也可以通过切片的方式:
从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是name:[1:10],比如说要获取name的第一个元素到第五个元素,就可以用name[0:6],切片是不包含后面那个元素的值的,记住顾头不顾尾;前面的下标如果是0的话,可以省略不写,这样写,name[:6],切片后面还有可以写一个参数,叫做步长,也就是隔多少个元素,取一次,默认可以不写,也就是隔一个取一次,切片操作也可以对字符串使用,和列表的用法一样
names = ['andashu','cc','niuniu','amy','lily']
names[1:4] #取下标1至下标4之间值,包括1,不包括4
names[1:-1] #取下标1至-1的值,不包括-1
names[0:3] #取下标0至3的值,不包括3
names[:3] #取下标0至3的值,不包括3,和上面的效果一样,0可以省略不写
names[2:]#取从第二个下标开始的后面所有元素
#下面是加上步长的
nums = [1,2,3,4,5,6,7,8,9,10]
nums[::2]#这个代表取所有的元素,然后每隔2个元素取一个
nums[1:8:3]#代表取第二个元素开始,到第八个结束,隔3个取一次
2,元组tuple,
元组的值是不能改变的,元组的定义用()圆括号,元组一般用来存放程序中不变的数据,例如jdbc的连接数据,元组的只有两个内置方法index(),count()
3,字典dict
字典是一种key-value的定义方式,用{},比如说要存每个人的信息,那么每个人的编号就是key,value就是每个人的信息,这样的话,一个字典就能存所有人的信息了。
字典的定义使用{},大括号,每个值用“,”隔开,key和value使用“:”分隔
infos = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山东'],'lily':[25,18612532981,'河南']}
infos['marry'] #取marry的信息
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重
字典是无序的,因为它没有下标,用key来当索引,所以是无序的
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重
字典的增删改查:
增:
infos = {'marry': [18, 18612512981, '北京'], 'amy': [20, 18612512991, '山东'], 'lily': [25, 18612532981, '河南']}
infos['andy'] = [22, 18712512981, '河北'] # 增加
修改:
infos = {'marry': [18, 18612512981, '北京'], 'amy': [20, 18612512991, '山东'], 'lily': [25, 18612532981, '河南']}
infos['marry'] = [38, 18612512981, '北京']
删除:
infos = {'marry': [18, 18612512981, '北京'], 'amy': [20, 18612512991, '山东'], 'lily': [25, 18612532981, '河南']}
infos.pop('marry') # 标准的删除方法
del infos['marry'] # 使用del方法删除
info.popitem() # 随机删除一个值
查询:
infos = {'marry': [18, 18612512981, '北京'], 'amy': [20, 18612512991, '山东'], 'lily': [25, 18612532981, '河南']}
infos.get('maryy') # 获取marry的信息,这种方式如果key不存在的话,会返回None
infos['marry'] # 获取marry的信息,这种方式如果key不存在的话,会报错
'marry' in infos # 判断marry是否在这个字典中,返回True或者False
字典的内置方法:
dic = {'stu1': 'cc', 'stu2': 'andashu', 'stu3': 'niuniu'}
print(dic.values()) # 打印所有value
print(dic.keys()) # 打印所有的key
print(dic.setdefault('stu1', 'fengluo')) # 如果这个key存在的话,那就不动它,不存在的话,添加一个
dic2 = {'stu1': 'sriba', 'stu10': 'baidu'}
dic.update(dic2) # 更新字典值,如果key存在的话,就更新,不存在的话就添加
print(dic.items()) # 字典转换成一个list
循环字典:
dic = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}
for k in dic:
print(k,dic[k])#打印key和value的值,推荐使用这种方式,速度快
4,集合set
集合:
集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据
list = [2,3,1,2,3,4]
s_list = set(list)#这样就定义了一个集合
set1 = set([1,3,4,5,6])#这种方式和上面的都是把list转换成一个集合
set2={'hehe','hehe1','hehe3'}#这种方式是直接定义一个集合
list1 = {1, 2, 3, 4, 5, 6, 9}
list2 = {2, 3, 4, 6, 1}
list3 = {1, 2, 3}
print(list1.intersection(list2)) # 取交集,也就是取list1和list2中都有的
print(list1 & list2)# 取交集
print(list1.union(list2)) # 取并集,也就是把list1和list2合并了,然后去除重复的
print(list1 | list2)# 取并集
print(list1.difference(list2)) #取差集 在list中存在,在list2中没有的
print(list1 - list2)
print(list3.issubset(list1))#判断list3是不是list1的子集
print(list1.issuperset(list3))#判断list1是不是list3的父集
print(list1.isdisjoint(list3))#判断list1和list3是否有交集
print(list1.symmetric_difference(list2))#对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉
print(list1 ^ list2)
list1.add(888)#添加元素
list1.update([777,666,666])
list1.remove(777)#删除元素,如果元素不存在会报错
list1.pop()#删除一个随机的元素,并返回删除的元素
list1.discard('dddd')#如果删除的元素存在,删除,不存在不做处理
重新起航!