列表,字典

来源:互联网 发布:服装面料软件 编辑:程序博客网 时间:2024/06/07 16:51

列表,字典

  • 列表字典
    • 列表
      • 列表方法调用
      • 深浅拷贝
    • 集合set
      • 集合类型操作符
    • 字典


列表

list 最具灵活性的有序集合对象类型

L = []L = [0123]L = [012,[456]]L[I]L[I][J]L[I:J]L1+L2L.append(4)     # 插入单个元素L.extend([5,6,7])   #插入一个列表,插入几个元素,列表会多几个元素l.insert(1)    #在偏移处插入l.index(1)    #首次出现的位置l.count(x)     #计数l.sort()      #排序与reverse合用,可以实现从大到小l.reverse()   #元素反转del l[k]     del l[i:j]l.pop()      #删除某个位置l.remove(2)     #删除元素l[i:j]=[]        #重新赋值l[i]=1              #重新赋值l[i:j]=[4,5,6]    #重新赋值

这里写图片描述

列表方法调用

l[0:3]=l[:3]

这里写图片描述

append与sort

L.append(‘please’)

L.sort() #递增 修改了列表

append与L+[]的区别

append是原地列表

+是生成新列表

l.sort(key=str.lower,reverse=True)

排序的key参数也很有用

以后内置函数sortef比sort方法更好用

深浅拷贝

s = ['abc','ABD']s2 = s.copy()print(s2)s2[0] = 3print(s2)------------------['abc', 'ABD'][3, 'ABD']

修改字符串不影响原先的

s = [[2,3,4],'ABD',158]s2 = s.copy()print(s2)s[0][0] = 3print(s2)print(s)------------------[[2, 3, 4], 'ABD', 158][[3, 3, 4], 'ABD', 158][[3, 3, 4], 'ABD', 158]

修改序列影响原来的

深拷贝=克隆

浅拷贝=只拷贝第一层


这里写图片描述
这里写图片描述

这里写图片描述

#不是深浅拷贝,注意a = [[1,2],3,4]b = ab [1] = 123print(b)print(a)---------------[[1, 2], 123, 4][[1, 2], 123, 4]

集合set

所有python中所有不可改变的的对象(imutable objects)都是可哈希的,比如字符串,元组,也就是说可改变的容器如字典,列表不可哈希(unhashable)

set里的 元素一定是不可变的元素,元素是可哈希的,无序的不重复的,没有切片,索引,取值

取值可以通过 forinnot in 循环和迭代器

集合成员可以做字典的键

a = set('wang')print(a)-----------------{'n', 'w', 'a', 'g'}
a = {'wang','lei'}print(a,type(a))--------------{'lei', 'wang'} <class 'set'>

集合分类:可变集合,不可变集合

可变集合(set):可添加删除元素,非可哈希(set函数本身是非可哈希的),不能用作字典的键,也不能做其他集合的元素

不可变集合(frozenset):与上相反

s = ['wang',123]a = set(s)       #a是非可哈希c = {a:'lei'}    #报错
a = {'wang','lei'}a.add('www')            #add加入整体print(a)--------------{'lei', 'www', 'wang'}---------------------a = {'wang','lei'}a.update('abc')      #update分散开,重复的只打印一个print(a)---------------{'wang', 'lei', 'b', 'c', 'a'}a = {'wang','lei'}a.update([12,'eee'])      #update加字典print(a){'wang','lei',12,'eee'}a.remove(12)              #删除a.pop()                #随机删除a.clear()              #清空

集合类型操作符

1.in,not in

2.等价于不登等价

set('alex')==set('alexe')   #等价.左边四个元素的集合,右面也是4个元素的集合(不重复),不能有其他的元素

3.子集,超集

print(set('wang') < set('wanglei'))

4.并集(|),交集(&),差集(-),反向交集(^)

差集考虑两者前后顺序,反向交集是除了交集之外的


字典

键不可变

D = {}           #空D = {'ABC':2265:'fd'}D = {'ABC':{1:2},265:'fd'}D = dict.fromkeys(['a','b']) D = dict(zip(keyslist,valslist))D = dict(name='bob',age=40)D['dfe'] = 'fjd'       #增加dfe键,fjd值D[ABC][1]           #键测试是否在字典'fd' in D            #关系测试D.keys()       #查看所有键D.valus()      #查看所有值D.items()      #所有项目以元组形式D.copy()         #复制D.get(default)     #输入键,返回值D.update(d2)       #合并键值对D.pop(key)         #删除键len(D)             #长度D[key] = 42         #修改键del D [key]         #删除键list(D.keys())      #用列表方式提取键D1.keys()&D2.keys()   #交集Dictionary views (Python 3.0)D = {x:x*2 for x in range(10)}

这里写图片描述

原创粉丝点击