字典类型,列表类型,列表循环推导式

字典类型

字典,又称哈希映射

可哈希性
print(hash('hello'))

字典是键值对,key对应值,其中key和value相对应,具有描述性的功能

#dic={}
#d={1:'aaa',2.2:'bbb','xxx':'ccc',(1,2,3):'dddd'} #d=dict(...)
#print(d[1,2,3])   #[1,2,3]对应的就是dddd

#类型转换

#d=dict(x=0,y=1)
#print(d)

#item=[('x',2),('y',3)]
#d_1=dict(item)

#print(d_1)
#keys=['name','age','gender','height','weight']

##d_2={}
#d_2={}.fromkeys(keys,None)
#print(d_2)

#内置方法

dic={'name':'egon','age':18}

#print(dic['name'])

#dic['name']='EGON'   ##‘EGON’替换为‘egon’
#print(dic)

#dic['gender']='male' #相当于添加,如果有,对应的内容覆盖,如果没有添加
#print(dic)

##长度 len

##成员运算 in 和not in 以字典的key为准

##删除   del pop

dic={'name':'egon','age':18}

•   ##删除对应的key和value,删除之后不可找回
#print(dic)

#res=dic.pop('name')     ###删除对应的key和value,仅被删除的key可以找回
##print(res)
#print(dic)

#res=dic.popitem()   ###随机删除字典的一对key和value,一般删除末尾的,被删的可以找回
#print(dic)
#print(res)

 

###循环

dic={'name':'egon','age':18}

#for k in dic:

print(k)     ##打印的是key的值

#for k in dic.keys():   #打印的key的值
•   #print(k)

#for v in dic.values():   ###打印的是value的值

# print(v)

# for k, v in dic.items(): # k,v=('name', 'egon')   ##打印的是key和value的值

# print(k,v)
扩展1
# date={
# '肖申克的救赎' : 'Frank Darabont',
# '这个杀手不太冷' : 'Luc Besson',
# '阿甘正传' : 'Robert Zemeckis'
# }
# for name in date:
#     print('电影'+name+"的导演是"+date[name])
扩展2:

#列表转字典格式


# s = "k:1|k1:2|k2:3|k3:4",
'''
d = {}
def foo(s):
  new_list = s.split('|')
  for i in new_list:
      s1 = i.split(':')
      k,v = s1           # 包的概念,
                          # a,b,c=1,2,3
                          # print(a,b,c)
      d[k] = int(v)
  print(d)
foo(s)
'''
扩展3:
# words = ['apple','book','atom','bat']

# by_letter = {}

# for word in words:

# letter = word[0]

# if letter not in by_letter:

# by_letter[letter] = [word]

# else:

# by_letter[letter].append(word)

# print(by_letter)

setdefault 函数

# for word in words:                #简洁方法       

# letter = word[0]

# by_letter.setdefault(letter,[]).append(word)

# print(by_letter)

#defaultdict 模块

# from collections import defaultdict              

# by_letter = defaultdict(list)

# for word in words:

# by_letter[word[0]].append(word)

# print(by_letter)

 

 

#列表类型 [] 

1,基础

#类型转换


#l=['a','b','c'] #l=list(['a','b','c'])
#l=list('hello')
#print(l)
#l=list({'x':1,'y':2})
#print(l)

#需要掌握的内置方法

#l=['a','b','c','d','e']
#print(l[1])
#print(l[-1])
#l[0]='A'   #第一个字母变成A,但是id完全相同
#print(l)
#l[5]='eeeeeee' #转换的内容超过列表里的内容,报错l

#切片

#l=['a','b','c','d','e']
#print(l[1:3:2])   # 1:3选中切割从第2个包括第2个到第3个但不包过第3个的内容,:2是步长,默认步长为1

#长度 len
#l=['a','b','c','d','e']
#print(len(l)) # 输出为5

#追加 append

#l=['a','b','c','d','e']
#l.append('DDDDD')   #默认追加最后
#print(l)

#插入 insert

#l=['a','b','c','d','e']
#l.insert(0,'LLLLLL')   #从第一项之前开始插入’LLLLLL'
#print(l)

#删除 del  remove  pop

#l=['a','b','c','d','e']
#del l[1]       #删除l的第二项,不输入内容默认删除全部,内容删除全部后查找为错误
#print(l)
#res=l.remove('b')   # 移动确定的内容‘b',而不是按次序删除。内容被移除显示为None
#print(1)
#print(res)

#res=l.pop(1)   #移动按次序查找的内容,内容被移除之后可以继续显示为本身
#print(res)
#print(l)

#循环

 for.. in ...:
#l=['a','b','c','d','e']
#for item in l:               # for in 循环

print(item)
列表生成式

# names=['egon','alex_sb','kevin_sb']

# print([name for name in names if name.endswith('sb')])
# print([name.upper() for name in names if name.endswith('sb')])
扩展1:

#列表嵌套推导式

# all_data= [['egon','alex','kevin'],['huxx','jix','wang']]

# a = [name for names in all_data for name in names if len(name) > 3] #最底层的嵌套写在最后面

# print(a)

 

# tuples = [(1,2,3),(4,5,6),(7,8,9)]

# a = [x for names in tuples for x in names]

# print(a)

# print([[x for x in names] for names in tuples])       #分析语法也是很重要的

#如果有三个及以上的嵌套,就要考虑可读性的问题了
扩展2: bisect
# import bisect
# a = [1,0,3,4,5,6,6,6,7,7]
# res = bisect.bisect(a,0)           #查找0插入的位置而不会插入,
# res_1 = bisect.bisect(a,1)
# print(a)
# print(res)
# print(res_1)
扩展3:

zip函数

# a=[1,2,3]

# b=[4,5,6]

# c=zip(a,b)

# print(list(c))           #对应生成组合

# d=[7,8]

# print(list(zip(a,b,d)))     #取决于最短的那一组

 

zip函数和enumerate函数j结合

# a=[1,2,3]

# b=[4,5,6]

# for i ,(k,v) in enumerate(zip(a,b)):

# print(i,(k,v))

# for i, k in enumerate(zip(a, b)):     #效果一样,不会报错

# print(i,k)

# for i ,k in enumerate(zip(a,b)):     #加个冒号

# print('{0}:{1}'.format(i,k))

# a=[(1,2),(3,4),(5,6)]
# b,c = zip(*a)             #相当于线性代数的列概念

# print(b,c)

 

#reversed函数         #生成器,反排序

print(list(reversed(range(10))))

猜你喜欢

转载自www.cnblogs.com/wang-kai-1994/p/10096536.html