06 列表、字典、集合、元祖的内置方法

1.列表内置方法
l=[1,2,3,4,5,6,7] res = l.clear() print(res)#None 因此.clear方法没有返回值 print(l)#[] 现在列表为空了
将列表反转reserse()
l = [1,2,1,3,4,5,6,7]
l.reverse()
print(l)#[7, 6, 5, 4, 3, 1, 2, 1]
sort()排序
l1 = [43,6,1,7,99] l1.sort(reverse=False) # 可以通过指定参数来修改默认的拍讯规则(降序) print(l1)

总结:列表类型:能存多个值;有序的;可变类型

队列:先进先出

l=[]
l.append('1')
l.append('2')
l.append('3')
print(l)
#['1', '2', '3']
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))
#1,2,3

堆栈:先进后出

l.append('1')
l.append('2')
l.append('3')
print(l)
#['1', '2', '3']
print(l.pop())
print(l.pop())
print(l.pop())
#3,2,1

2.元祖

2.1作用:存储多个值,元素与元素之间逗号隔开,元素可以是任意类型,元祖不能被修改

2.2定义:与列表类型比,只不过将【】换成了()

age = (1,3,4,5,6,67)本质上age = tuple((1,3,4,5,6,67))

元祖内必须传容器类型

a=(1,32,32,'sdf','fsd',[1,2,3])#tuple((1,32,32,'sdf','fsd',[1,2,3]))
print(type(a))
#<class 'tuple'>
tuple(1)
print(tuple(1))
#TypeError: 'int' object is not iterable.
            #元祖内必须传容器类型

 在定义容器类型的时候,哪怕只有一个元素,也必须加上逗号。否则识别为字符串。(***)

n=('a')
print(n,type(n))
#a <class 'str'>
n=('a',)
print(n,type(n))
#('a',) <class 'tuple'>

2.3优先掌握的操作:

#优先掌握的操作:
#1、按索引取值(正向取+反向取):只能取
#2、切片(顾头不顾尾,步长)
#3、长度
#4、成员运算in和not in

#5、循环

1.按索引取值(正向取+反向取):只能取

a=(1,32,23,4,'sd','fsd',[1,32,43])
print(a[0])

a[-1]='aaaaaaaa'
#ypeError: 'tuple' object does not support item assignment
a[-1][0]='改了元祖内列表中的值'
print(a)
#(1, 32, 23, 4, 'sd', 'fsd', ['改了元祖内列表中的值', 32, 43])

元祖内的值,不能修改

del a[0]
print(a)
#TypeError: 'tuple' object doesn't support item deletion

2.切片(还是顾头不顾尾)

连续两个::,代表从开始取到最后一个值

a=(1,32,23,4,'sd','fsd',[1,32,43])
print(a[::2])
#(1, 23, 'sd', [1, 32, 43])

3.长度len

a=(1,32,23,4,'sd','fsd',[1,32,43])
print(len(a))
# 7

4.成员运算 in 和 not in

a=(1,32,23,4,'sd','fsd',[1,32,43])
print('d' in a)
#False

5.循环for

a=(1,32,23,4,'sd','fsd',[1,32,43])
for i in a:
    print(i,end=' ')
# 1 32 23 4 sd fsd [1, 32, 43] 

总结:

能存多个值

有序

不可变

1.能存多个值。由于元祖是不可变类型。不能修改值,但是如果元祖里面有列表,可以先取出列表,再给修改。

比如在元祖内的列表中增加值.append

a=(1,32,23,4,'sd','fsd',[1,32,43])
print(id(a))
#6029824 a[
-1].append(666) print(a,id(a))
#(1, 32, 23, 4, 'sd', 'fsd', [1, 32, 43, 666])
#6029824

3.字典及其内置方法

3.1作用:字典能存储多组(key:value)键值对。由于key是不可变类型,而value是任意类型

3.2定义;

c = {'name':'zdq','pwd':123,(1,3):'可不可行'}
print(c['name'])
print(type(c))
print(c[(1,3)])
# zdq
# <class 'dict'>
# 可不可行

3.3注意字典的Key是不能重复的。若重复,则存储最后一组键值对

f={'name':'wuxi','name':'zdq','name':'abd'}
print(f['name'])
#abd

3.4len

f={'name':'wuxi','name':'zdq','name':'abd'}
print(len(f))
print(f)
#1
#{'name': 'abd'}

 优先掌握的操作:

1.key存取值:可存可取

正常取值
b={'name':123,'age':18}print(b['age'])
#18

对同一K赋多个值,则以最后一赋值为准 b['name']='789' b['name']='abc' print(b) # {'name': 'abc', 'age': 18} 34615232

赋值key。当要复制的key在字典中,会自动新增一个键值对(*****)

b={'name':123,'age':18}
#weight不在字典中 b['weight']='150' print(b) {'name': 'abc', 'age': 18, 'weight': '150'}

2.长度:len

统计字典的键值对个数

3.in 和not in。对于字典来说只能判断key值

 d3 = {'name':'wuxi','password':'123'}
 print('123' in d3)
 print('name' in d3)

4.删除

1.del 删除
# d3 = {'name':'jason','password':'123'} # del d3['name'] # print(d3) 2.pop弹出值。注意弹出即有返回值,弹出的在返回值中 #d4 = {'name':'jason','password':'123'} # res = d3.pop('name') # 弹出仅仅是value
# print(res) #jason,弹出值 2.1当键不存在时,直接报错 # res = d3.pop('age') # print(res) 报错。弹出字典中不存在的内容 3.clear()清除 # d3.clear() # print(d3) 全部清除,留下{} 

 定义字典的三种方式: 掌握d1 = {'name':'jason','password':123}

1.一般定义
d={‘name’:'jason','pwd':123}
2.掌握 d2 = dict(name='jason',password=123,age=18) # (******) print(d2,type(d2)) 3.列表转换字典(了解) l = [ ['name','jason'], ['age',18], ['hobby','read'] ]



5.键keys(),值values(),键值对items()。这三个方法分别用来获取字典所有的的key,value和同事取到这两个值

# 获取k
# d1 = {'name':'jason','password':123}
# print(d1.keys())  # 结果是dict_keys(['name', 'password'])  老母猪,省内存和之前的一样。就把它当成一个列表来看即可
# for k in d1.keys():
#     print(k)


# 获取value
# print(d1.values())  # dict_values(['jason', 123])  老母猪  现在就把它当成一个列表来看即可
#
# 拿到k:v两个值
# print(d1.items())  # dict_items([('name', 'jason'), ('password', 123)])
# 就把它看成是列表套元组,元组的第一个元素是字典的key 第二个元素是字典的valueeys(['name', 'password'])  老母猪占用空间小,要值就给几个,不要值就不给

6.for循环

e={‘name’:‘wuix’,‘aeg’:123}

for i in e:

print(i)

7.其他字典内置方法:

7.1   .get()字典获取值得推荐使用方法:取不到key值(当key值不在字典中)不会报错

#字典取值,取(value)的推荐使用方法
# get()根据key获取value(*******************************)与索引是有区别的
d1 = {'name':'jason','pwd':123}
1.一般方法: # print(d1['name'])
2.get方法 print(d1.get('name')) 当输入内容不在字典中:
1.不在逗号后写任何内容,返回none
# res = d1.get('age') # 当字典的key不存在的情况 不报错 返回None # print(res)#None
2.在逗号候写内容。返回内容 # res1 = d1.get('xxx','你输入的key值不存在') # get可以传第二个参数。当你的key不存在的情况下,返回第二个你写好的参数信息 # print(res1)
总结: # 第二个参数不写的话 当key不存在的情况下返回None,写了就返回写了内容 

总结:.get()括号内第二个参数不写,且key不存在,则返回None;

写了就返回,你指定的内容。

 7.2  .fromkeys()从‘列表’(或者其他容器)中快速的创建一个‘字典’

# dict.fromkeys()  快速的创建一个字典。
# 比如有一个列表
l1 = ['name','password','age','hobby']#。快速以这个4个为键快速建造一个字典
print(dict.fromkeys(l1,123))#.fromkeys(第一个,第二个)第一个写的是列表(容器),第二个为value值
#结果{'name': 123, 'password': 123, 'age': 123, 'hobby': 123}

7.3

.popitem()

d1 = {'name':'jason','pwd':123}
print(d1.popitem())  # 把字典尾部键值对取出来,用()就是写成元祖的形式
#('pwd', 123)

7.4  .setdefault()

d1 = {'name':'jason','pwd':123}
res1 = d1.setdefault('name','xxoo')  # 当键存在的情况下 不修改值 并且将原先key对应值返回给你
print(d1,res1)
#{'name': 'jason', 'pwd': 123} jason
res2 = d1.setdefault('age',18)  # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
print(d1,res2)
#{'name': 'jason', 'pwd': 123, 'age': 18} 18

7.5  .update()

d1 = {'name':'jason','pwd':123}
d2 = {"age":18}
d1.update(d2)#d1中无d2内容,则新增
print(d1) #结果{'name': 'jason', 'pwd': 123, 'age': 18}
d1.update(age=666) # 相当于赋值:d1['age'] = 18 print(d1)#d1中有d2内容,则修改 #结果{'name': 'jason', 'pwd': 123, 'age': 666}

存多个值

无序

8.集合及内置方法

创建集合的目的:仅仅为了找一个容器存放值。因此,无序,不可索引

作用:关系运算、去重

定义:

s = {1,2,3,4,5,6}
print(type(s))# <class 'set'>
#
s1 = set()
print(type(s1))  # 注意在定义空集合的只能用关键字set

# x = {}  # <class 'dict'> 
如果你仅仅只写了一个大括号 那么python默认将它当做字典类型

  

定义集合:可以包含多个元素,用逗号分隔、

集合的元素规则:

 1:每个元素必须是不可变类型
 可变:不可hash
 不可变:可hash
 s = {1,2,3,4,5,6,'a',(1,2),[1,2]}  # 报错
 s = {1,2,3,4,5,6,'a',(1,2),{"name":'jason'}}  # 报错

 2: 集合内没有重复的元素
 s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5}
 print(s)  # 自动将重复的元素 去除

 3:无序
 s = {1, 2, 3, 4, 5, 6}
 print(s[1])
不可以按索引取值
注意集合的目的是将不同的值存放到一起,两个集合之间用来做关系运算,无需纠结于集合中单个值

集合优先掌握的操作:

1、长度len
s = {1,2,3,4}
print(len(s))
2、成员运算in和not in
#
3、|合集
4、&交集
5、-差集
6、^对称差集
7、==
8、父集:》,》=
9、子集:<,<=
pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}
#交集
# 既报名python也报名linux的学生姓名
print(pythons & linux)  
#差集
# 只报名python的学生姓名
print(pythons - linux)
#对称差集
# 没有同时报名两门课程的学生姓名
print(pythons ^ linux)   
#合集
# 取出所有报了名的学生姓名
print(pythons | linux)
#==判断两个集合是否相等.
s={1,2,4}
s1={4,1,2}
集合无序所以是相等的
8、父集:判断‘两个集合是否包含’
标识:>,>= s = {1,2,3,4,55} s2 = {1,2,666}
print(s >= s2)  # s是否包含s2
""" # issubset() # issuperset() """
# 9、子集:<,<=

增加值add
s = {1,2,3,4,5} s.add(666) print(s) #{1, 2, 3, 4, 5, 666} s.add((1,2,3,4)) # 将容器类型也当成一个元素传入 print(s)
删除 #{1, 2, 3, 4, 5, (1, 2, 3, 4), 666} print(s.remove(1)) print(s) # remove()内若集合没有该值,则报错 print(s.discard(888888888)) print(s) # discard()内若集合没有该值,不会报错

  

原文地址:https://www.cnblogs.com/ZDQ1/p/11132632.html