首页 > 编程语言 > 详细

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

时间:2019-04-06 00:51:57      阅读:136      评论:0      收藏:0      [点我收藏+]

列表-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一功能 是 ·  操作

 

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

原文:https://www.cnblogs.com/jiazeng/p/10660564.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!