9、列表和字典类型

前面我们所接触的数据类型都是存单个值,今天我们来看看可以存多个值的列表和字典。

预习:

1、有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量

2、模拟队列

      模拟堆栈

3、有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

  即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

4、统计s='hello alex alex say hello sb sb'中每个单词的个数

  结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

 

本篇导航:

 

一、列表(list)

用途(存多个值,可以修改):爱好,装备,女朋友们

格式:包含在[]内,用逗号分割开

ps:

hobby=['play','eat','sleep']

基本操作:

 1 #查看:
 2 girls=['alex','wsb',['egon','ysb']]
 3 print(girls[2])  #['egon', 'ysb']
 4 print(girls[2][0])  #'egon'
 5             
 6 #增加
 7 girls.append(元素)
 8 
 9 #删除
10 girls.remove(元素)
11 del girls[元素的索引]
12 
13 #修改
14 girls[0]='alexSB'

常用方法:

l=[1,2,3] #l=list([1,2,3])
print(type(l))

#pat1===》优先掌握部分
# 索引
l=['a','b','c','d','e','d']
print(l.index("d"))
print(l.count("d")) #统计个数
# 切片
l=['a','b','c','d','e','f']
print(l[1:5])
print(l[1:5:2])
print(l[2:5])
print(l[-1])

#了解
# print(l[-1:-4])
# print(l[-4:])
# l=['a','b','c','d','e','f']
# print(l[-2:])

# 追加
hobbies=['play','eat','sleep','study']
hobbies.append('girls')
print(hobbies)

# 删除
hobbies=['play','eat','sleep','study']
x=hobbies.pop(1)
#不是单纯的删除,是删除并且把删除的元素返回,我们可以用一个变量名去接收该返回值
print(x)
print(hobbies)

#了解
# del hobbies[1] #单纯的删除
# hobbies.remove('eat') #单纯的删除,并且是指定元素去删除


# 长度
hobbies=['play','eat','sleep','study']
print(len(hobbies))

# 包含in
hobbies=['play','eat','sleep','study']
print('sleep' in hobbies)
msg='hello world egon'
print('egon' in msg)


##pat2===》掌握部分
#插入(可以指定位置插入)
hobbies=['play','eat','sleep','study','eat','eat']
hobbies.insert(1,'walk')
hobbies.insert(1,['walk1','walk2','walk3'])
print(hobbies)

#可以一次插入多个(仅追加)
hobbies.extend(['walk1','walk2','walk3'])
print(hobbies)

#pat3===》了解部分
#clear 清空列表
hobbies=['play','eat','sleep','study','eat','eat']
hobbies.clear()
print(hobbies)

#copy 复制
hobbies=['play','eat','sleep','study','eat','eat']
l=hobbies.copy()
print(l)

#reverse 倒序排列
l=[1,2,3,4,5]
l.reverse()
print(l)

#sort 排序
l=[100,9,-2,11,32]
l.sort() #sort(reverse=True)从大到小
print(l)
View Code

 

二、字典(dict)

用途:存多个值,这一点与列表相同,值可以是任意数据类型,存在里面的数据是无序的

特征:每一个值都一个唯一个对应关系,即key,强调一点,key必须是不可变类型

格式:定义在{},逗号分割,每一个元素的形式都是key:value

ps:

student_info={'age':22,'name':'lln','sex':male,'hobbies':['zsb0','zsb1','zsb2','zsb30']}

基本操作:

 1 #查看
 2 student_info={'age':18,'name':'lln','sex':male,'hobbies':['zsb0','zsb1','zsb2','zsb30']}
 3 print(student_info['age'])  #18
 4 print(student_info['hobbies'])  #['zsb0', 'zsb1', 'zsb2', 'zsb30']
 5 print(student_info['hobbies'][2])  #'zsb2'
 6             
 7 #增加
 8 student_info['stu_id']=123456
 9             
10 #删除
11 del student_info['stu_id']
12             
13 #修改
14 student_info['name']='alexSB'

 常用方法:

# info=['egon','male',18]
# info_dic={'name':'egon','age':18,'sex':'male'}

#存/取
info_dic={'name':'egon','age':18,'sex':'male'}
# print(info_dic['name11111111'])  #报错
print(info_dic.get('name',None)) #取不删
info_dic['level']=10 #
print(info_dic)

# 删除
#pop:key存在则弹出值,不存在则返回默认值,如果没有默认值则报错
info_dic={'name':'egon','age':18,'sex':'male'}
print(info_dic.pop('name',None)) #删制定
print(info_dic)
print(info_dic.popitem())  #随机返回并删除字典中的一对键和值(项)。
print(info_dic)
# del info_dic['name']

# 键s,值s,键值对
info_dic={'name':'egon','age':18,'sex':'male'}
print(info_dic.keys())
print(info_dic.values())
print(info_dic.items())

# 循环
# for k in info_dic:
#     # print(k,info_dic[k])
#     print(k)

# print('========>')
# for k in info_dic.keys():
#     print(k)

# for val in info_dic.values():
#     print(val)

# for k,v in info_dic.items(): #k,v=('name', 'egon')
#     print(k,v)

# 长度
info_dic={'name':'egon','age':18,'sex':'male'}
print(len(info_dic))

# 包含in
info_dic={'name':'egon','age':18,'sex':'male'}
print('name' in info_dic)
print('name' in info_dic.keys())
print('egon' in info_dic.values())
print(('name','egon') in info_dic.items())



#掌握
#update 没有则添加有责更新
info_dic={'name':'egon','age':18,'sex':'male'}
info_dic.update({'a':1,'name':'Egon'})
print(info_dic)

#字典中列表值添加
info_dic['hobbies']=[]
info_dic['hobbies'].append('study')
info_dic['hobbies'].append('read')
print(info_dic)

#setdefault:key不存在则设置默认值,并且放回值默认值
#key存在则不设置默认,并且返回已经有的值
info_dic={'name':'egon','age':18,'sex':'male'}
print(info_dic.setdefault('hobbies',[1,2]))
print(info_dic)
print(info_dic.setdefault('hobbies',[1,2,3,4,5]))
print(info_dic)

#ps:
info_dic={'name':'egon','age':18,'sex':'male'}
# {'name':'egon','age':18,'sex':'male','hobbies':['study']}
info_dic.setdefault('hobbies',[]).append('study')
print(info_dic)
# {'name':'egon','age':18,'sex':'male','hobbies':['study','read']}
info_dic.setdefault('hobbies',[]).append('read')
print(info_dic)
# {'name':'egon','age':18,'sex':'male','hobbies':['study','read','sleep']}
info_dic.setdefault('hobbies',[]).append('sleep')
print(info_dic)
#l与info_dic[hobbies]指向的空间相同
l=info_dic.setdefault('hobbies',[])
print(l,id(l))
print(id(info_dic['hobbies']))
print(info_dic)

#了解
#copy 复制
info_dic={'name':'egon','age':18,'sex':'male'}
d=info_dic.copy()
print(d)

#clear 清空
info_dic.clear()
print(info_dic)

# 快速批量创建字典
d1=dict.fromkeys(('name','age','sex'),None)
d2=dict.fromkeys(('name','age','sex'),('egon',18,'male'))
print(d1)
print(d2) #{'name': ('egon', 18, 'male'), 'age': ('egon', 18, 'male'), 'sex': ('egon', 18, 'male')}

#其他创建字典方法
info=dict(name='egon',age=18,sex='male')
print(info)

info=dict([('name','egon'),('age',18)])
print(info)
View Code

 

预习解答:

#1、有列表data=['lln',22,[1999,9,19]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
data=['lln',22,[1999,9,19]]
name = data[0]
age = data[1]
year = data[2][0]
month = data[2][1]
day = data[2][2]
print(name,age,year,month,day)

#2、队列:先进先出
queue_l=[]
#入队
queue_l.append('first')
queue_l.append('second')
queue_l.append('third')
print(queue_l)
#出队
print(queue_l.pop(0))
print(queue_l.pop(0))
print(queue_l.pop(0))


#堆栈:先进后出,后进先出
l=[]
# #入栈
l.append('first')
l.append('second')
l.append('third')
# #出栈
print(l)
print(l.pop())
print(l.pop())
print(l.pop())

'''
3、有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,
将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
'''

x = {"k1":[],"k2":[]}
y = [11,22,33,44,55,66,77,88,99,90]
for i in y :
    if i > 66 :
        x["k1"].append(i)
    if i < 66:
        x["k2"].append(i)
print(x)

'''
4、统计s='hello alex alex say hello sb sb'中每个单词的个数
  结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
'''

s = "hello alex alex say hello sb sb"
s = s.split()
msg = {}
for i in s :
    if i in msg :
        msg[i] += 1
    else :
        msg[i] = 1
print(msg)
View Code

 

小知识点:

可变类型与不可变类型

可变数据类型:在id不变的情况下,数据类型内部的元素可以改变  ps:列表,字典

不可变数据类型:value改变,id也跟着改变  ps:数字,字符串,布尔

 

posted @ 2017-07-20 19:35  布吉岛丶  阅读(493)  评论(0编辑  收藏  举报