python基础中的四大天王-增-删-改-查

列表-list-[]

输入内存储存容器 发生改变通常直接变化,让我们看看下面列子

 

增---默认在最后添加

#append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典
#lst=[1,2,3,'afdsf',6]
#1print(lst.append(233))#---none--没有返回值 所以none
#2
'''lst=lst.append(233)
print(lst)'''#---none---没有返回值 所以none

#lst.append(223)#---int
#print(lst)#--true

#----另类的+在列表我们指定位置
# lst.insert(2,1)#在列表索引为2 位置添加1,那么原本lst中索引为2的数据且它后面数据就得依次往后排
# print(lst)

# lst.append('eva')#---str
# print(lst)

# tu1 = ('a', 'b',3, 666)
# lst.append(tu1)
# print(lst)#----[1, 2, 3, 'afdsf', 6, ('a', 'b', 3, 666)]

# set = ('a', 'b',3, 666)
# lst.append(set)
# print(lst)
#
#
# dct = {'a':'b','c':666}
# lst.append(dct)
# print(lst)
#--从底层结构来看,列表变化都是在操作增删改时 直接放生变化,不会生成返回值
#好比我同时打开下面两个操作
# set = ('a', 'b',3, 666)
#dct = {'a':'b','c':666}
# lst.append(set)
#
# lst.append(dct)
# print(lst)
#根据python解释器 从上至下特点 结果如下
#[1, 2, 3, 'afdsf', 6, ('a', 'b', 3, 666), {'a': 'b', 'c': 666}]

 

删---仅pop有返回值---

#删 pop---()中什么不写 默认删除最后一个
#lst=[1,2,3,'afdsf',6]
# ret=lst.pop(1)#只有索引删,且有返回值,别的没有返回值 】,也就是说直接在【本身】上打印,或者赋值给某一(变量再打印),都是--none
# print(lst,ret)

# clear 清空列表
# lst.clear()
# print(lst)

#del--del lst[列表索引]-----del 和lst 中间什么符号也不需要--死规定
#按照索引删除该元素
# del lst[0]
# print(lst)#---[2, 3, 'afdsf', 6]

#按照切片删除该元素--顾头不顾尾
# del lst[0:2]
# print(lst)#----[3, 'afdsf', 6]


#按照步长删除该元素-
# del lst[::2]
# print(lst)#---[2, 'afdsf']

#也可以直接删除列表,但一般不会这么用
# del lst
# print(lst)#---NameError: name 'lst' is not defined

 

#改

#改
# 按照索引改值
# l = ['a','jiazeng','2','xiaohei']
# l[0] = '男神'
#print(l)  # ['男神', 'jiazeng', '2', 'xiaohei']

#l[0]=l[0].upper()
#print(l)#---['A','jiazeng','2','xiaohei']

#

# 按照切片改值(迭代着增加)
# l = ['a', 'jiazeng', '2', 'xiaohei']
# tup1=(1,2,'sa','sha',[1,2,3],{'a':1,'b':2})
# dic={'a':1,'b':2}
# l[1:3] = 'abcdefg'#---必须是可迭代数据类型str--就是拆散开放入,字典就是把键迭代添加,其它就是打开括号---注意 数字 bool是不可迭代数据类型
# print(l) # ['a', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'xiaohei']

# 按照切片(步长)改值(必须一一对应)
# l = ['a', 'jiazeng', '2', 'xiaohei']
# dic={'a':1,'b':2}
# lst=[1,2]
# l[::2] = '帅傻'#对需要对改的位置一一对应 多一个不行少一个也不行
# print(l) #['', 'jiazeng', '', 'xiaohei']

 

#通过索引查
# l = ['a', 'jiazeng', '2', 'xiaohei']
# print(l[0])
# #通过步长
# print(l[::2])
# #通过切片
# print(l[:3])
# #也可以通过for 循环或者推导式
# print([i for i in l if i.isdigit() ])

 

列表其它操作

count(数)(方法统计某个元素在列表中出现的次数)。
1 a = ["q","w","q","r","t","y"]
2 print(a.count("q"))

sort (方法用于在原位置对列表进行排序)。

 reverse (方法将列表中的元素反向存放)
1 a = [2,1,3,4,5]
2 a.sort()# 他没有返回值,所以只能打印a
3 print(a)
4 a.reverse()#他也没有返回值,所以只能打印a
5 print(a)

列表也可以相加与整数相乘
l1 = [1, 2, 3]
l2 = [4, 5, 6]
# print(l1+l2)  # [1, 2, 3, 4, 5, 6]
print(l1*3)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]

 

列表小练习

'''l1 = [1, 2, 'bai', [1, 'al', 3,]]
# 1, 将l1中的'bai'变成大写并放回原处。
# 2,给小列表[1,'al',3,]追加一个元素,'亲亲'。
# 3,将列表中的'al'通过字符串拼接的方式在列表中变成'als'
l1[2]=l1[2].upper()#用到索引找我们想要的内容时一定要注意 索引到那个是什么数据类型,
# 如果是字符串,你需要先炒作你想改的某样,再把他赋值或者说覆盖掉原先索引位置上
print(l1)

l1[-1].append('亲亲')
print(l1)

l1[-1][1]=l1[-1][1]+'s'
print(l1)'''

 

字典--dict---{}

概念

'''不可变(可哈希)的数据类型:int,str,bool,tuple。

    可变(不可哈希)的数据类型:list,dict,set。

字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的:

    Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的。

    Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等。

 在Python3.5版本(包括此版本)之前,字典是无序的。

 在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序)。

 当然,字典也有缺点:他的缺点就是内存消耗巨大。'''

 

# 通过键值对直接增加
# ---注意没有返回值 所以不可以print(dic['weight'] = 75)
'''dic = {'name': 'jiazeng', 'age': 18}
dic['weight'] = 75 # 没有weight这个键,就增加键值对
print(dic) # {'name': 'jiazeng', 'age': 18, 'weight': 75}
dic['name'] = 'self_brother' # 有name这个键,就成了字典的改值
print(dic) '''# {'name': 'self_brothe', 'age': 18, 'weight': 75}

# setdefault
'''dic = {'name': 'jiazeng', 'age': 18}
dic.setdefault('height',175) # 没有height此键,则添加---注意格式:'',''
print(dic) # {'name': jiazeng', 'age': 18, 'height': 175}
dic.setdefault('name','barry') # 有此键则-原字典不变--什么变化没有
print(dic) # {'name': jiazeng', 'age': 18, 'height': 175}
#注意setdefault它有返回值
dic = {'name': 'jiazeng', 'age': 18}
ret = dic.setdefault('name')
print(ret)  # jiazeng
print(dic.setdefault('name'))#---# jiazeng'''

 

# pop 
# 通过key删除字典的键值对,有返回值,可设置返回值。----推荐应用程序首选pop
dic = {'name': 'xiaohei', 'age': 88}
#ret = dic.pop('name')#-直接输入健名就可以,返回是值
# ret = dic.pop()---如果()中不写 还会报错---字典中pop() 中必须写键
#print(ret,dic) # xiaohei {'age': 18}
# ret1 = dic.pop('b','爱你')#----当没有这个键时 返回就是爱你,有这个键 返回还是所删除的键对应的值
# print(ret1,dic) # 爱你 {'name': 'xiaohei', 'age': 18}

#popitem 3.5版本之前,popitem为随机删除,3.6之后为删除最后一个,有返回值
# dic = {'name': 'xiaohei', 'age': 88}
# ret = dic.popitem()
# print(type(ret),dic) # ('age', 88) {'name': 'xiaohei'}----返回的是键值对所拼车的元祖形式
#<class 'tuple'> {'name': 'xiaohei'}
#
# #clear 清空字典
# dic = {'name': 'xiaohei', 'age': 88}
# dic.clear()
# print(dic) # {}
#
# # del
# # 通过键删除键值对--注意没有返回值 所以不可print(del dic['name'])<<dic=del dic['name']--print(dic)>>
#dic = {'name': 'xiaohei', 'age': 88}
#print(del dic['name'])

# del dic['name']
# print(dic) # {'age': 88}
# #删除整个字典
# del dic

 

#改也可以说增
# 通过键值对直接改
# dic = {'name': '太白', 'age': 18}
# dic['name'] = 'barry'
# print(dic) # {'name': 'barry', 'age': 18}

# update
#第一种写法---键=''
#有相同覆盖,无则在后添加
# dic = {'name': 'jiazeng', 'age': 18}
# #dic.update(sex='', height=175)
# dic.update(name='', age=175)#----{'name': '', 'age': 175}
# print(dic) # {'name': 'jiazeng', 'age': 18, 'sex': '', 'height': 175}

#第二种写法 如果我们想加入多个键值对 并且他们是列表中套有个个小元祖---
#他们会在update 打开列表【】和元祖小括号 并将元祖中元素 按照 键,值划分 加入到字典中
#有相同覆盖 无则从字典后添加
# dic = {'name': 'jiazeng', 'age': 18}
# # l1=[(1, '购物车'),(2, '登入系统'),(3, '计算机'),(4, '选课系统')]
# # print(type(l1[0]))
# dic.update([(1, '购物车'),(2, '登入系统'),(3, '计算机'),(4, '选课系统')])
# print(dic) # {'name': 'jiazeng', 'age': 18, 1: '购物车', 2: '登入系统', 3: '计算机', 4: '选课系统'}

#第三种 用字典方法去改,有相同键覆盖 无相同键添加键值对
#被修改的.update(用你需要的)
# dic1 = {"name":"jin","age":18,"sex":"male"}
# dic2 = {"name":"jiazeng","weight":75}
# dic1.update(dic2)
# print(dic1) # {'name': 'jiazeng', 'age': 18, 'sex': 'male', 'weight': 75}
# print(dic2) # {'name': 'alex', 'weight': 75}

 

#通过键查询
# 直接dic[key](没有此键会报错)
# dic = {'name': 'xiaohei', 'age': 18}
# print(dic['name']) # xiaohei
#
# # get--强烈推荐查用get 没有此键不会报错 还可以设置返回值
# dic = {'name': 'xiaohei', 'age': 18}
# v = dic.get('name')
# print(v) # 'xiaohei'
# #get--设置返回值
# v = dic.get('name1')
# print(v) # None
# v = dic.get('name2','没有此键')
# print(v) # 没有此键
#
# #查看字典中所有键---keys()--返回一个类似列表容器,并不改变原本数据结构
# dic = {'name': 'xiaohei', 'age': 18}
# print(dic.keys()) # dict_keys(['name', 'age'])
# #查看字典中所有值---values()
# dic = {'name': 'xiaohei', 'age': 18}
# print(dic.values()) # dict_values(['xiaohei', 18])
# #查看字典中所有键值对---items()
# dic = {'name': 'xiaohei', 'age': 18}
# print(dic.items()) # dict_items([('name', 'xiaohei'), ('age', 18)])

 

 

还有集合 不过集合只有 增---删两大天王

集合set {}---我理解为变异是字典 只有键 没有值
#只有增删两大天王

# set1 = set({1,2,'barry'})
# set2 = {1,2,'barry'}
# print(set1,set2)  # {1, 2, 'barry'} {1, 2, 'barry'}

#增---无序增
#set1 = {'alex','wusir','ritian','egon','barry'}
# set1.add('景女神')
# print(set1)

#update:迭代着增加--且无序
# set1.update('A')
# print(set1)
# set1.update('老师')
# print(set1)
# set1.update([1,2,3])
# print(set1)

#集合删
set1 = {'alex','wusir','ritian','egon','barry'}

# set1.remove('alex')  # 删除一个元素
# print(set1)

# set1.pop()  # 随机删除一个元素
# print(set1)
#
# set1.clear()  # 清空集合
# print(set1)
#
# del set1  # 删除集合
# print(set1)

 

 

元祖更可怜 因为他是号称不动明王 所以只能查啦

元组tuple---元组:俗称不可变的列表,又被成为只读列表--基本数据类型之一
#()括号括起来
#里面可以放任何数据类型的数据,
#查询可以,循环也可以,切片也可以.
#但就是不能改-只剩下查天王,增删改天王都不是对手

#元组的索引切片

# tu1 = ('a', 'b', 'xioahei', 3, 666)
# print(tu1[0])  # 'a'
# print(tu1[-1])  # 666
# print(tu1[1:3])  # ('b', 'xioahei')
# print(tu1[:-1])  # ('a', 'b', 'xioahei, 3)
# print(tu1[::2])  # ('a', 'xioahei', 666)
# print(tu1[::-1])  # (666, 3, 'xioahei', 'b', 'a')


#因为元组的特性,直接从属于元组的元素不能更改,所以元组只能查看。
# 可以利用for循环查询
#index:通过元素找索引(可切片),找到第一个元素就返回,找不到该元素即报错
# tu1 = ('a', 'b', 'xioahei', 3, 666)
# print(tu1.index('xioahei'))#----2 实现某set一功能 是 ·  操作

 

posted @ 2019-04-06 00:17  self哥  阅读(281)  评论(0编辑  收藏  举报