视觉学习 Task05

Task 05

——字典、集合和序列

练习题(字典):

  1. 字典的基本操作:
dic = {
           'python':95,
           'java':99,
           'c':100
           }

• 字典的长度是多少:

print(len(dic))

• 请修改‘java’这个key对应的value值为98

dic['java']=98

• 请删除c这个key

del dic['c']

• 增加一个key-value对,key的值为php,value的值是90

dic['php']=90

• 获取所有的key值,存储在列表里

lst = list(dic.keys())

• 获取所有的value值,存储在列表里

lst = list(dic.values())

• 判断 javascript 是否在字典中

print('javascript' in dic)
#在是True不在Faluse

• 获得字典里所有value 的和

lst = list(dic.values())
i = 0
sum = 0
while i<len(lst):
	sum=sum+lst[i]
	i += 1

• 获取字典里最大的value

lst = list(dic.values())
Max = max(lst)

• 获取字典里最小的value

lst = list(dic.values())
Max = min(lst)

• 字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中

dic1 = {'php':97}
dic.update(dic1)
  1. 有一个字典,保存的是学生各个编程语言的成绩,内容如下。各门课程的考试成绩存储方式并不相同,有的用字典,有的用列表,但是分数都是字符串类型,请实现函数transfer_score(score_dict),将分数修改成int型。
data = {
		'python':{'上学期':'90','下学期':'95'}
		'c++':['95','96','97']
		'java':[{'月考':'90','期中考试':'94','期末考试':'98'}]
		}

※本题的关键在于由于要利用到函数的嵌套,但是嵌套过程中需要输入的函数参数的类型却不同,这时就必须用到def file(*args)的参数类型,将参数打包再在函数体内拆包实现多型参数的适用,另一个要点是,在用if进行对输入变量的判定时,不能将判定范围缩小到'str'上,因为def file(*args)是将参数打包成元组,而元组内的成员不能被改变,但如果成员是可改变的如同字典或者列表,那么可以通过间接的改变成员的成员从而实现对元组的改变,所以if的搜索范围要截止到倒数第二层。`

def transfer_score(*score_dict):
    if type(score_dict[0])==type({1:1}):
        lst=list(score_dict[0].keys())
        i=0
        if type(score_dict[0][lst[0]])==type('1'):
            while i<len(lst):
                score_dict[0][lst[i]]=int(score_dict[0][lst[i]])
                i+= 1
        else:
            while i<len(lst):
                key=lst[i]
                transfer_score(score_dict[0][key])
                i += 1
    elif type(score_dict[0])==type([1,1]):
        i=0
        if type(score_dict[0][i])==type({1:1}):
            transfer_score(score_dict[0][i])
        elif type(score_dict[0][i])==type('1'):
            while i<len(score_dict[0]):
                score_dict[0][i]=int(score_dict[0][i])
                i += 1

练习题(集合):

  1. 创建一个空集合,增加{x,y.z}三个元素:
s = set()
s.add('x')
s.add('y')
s.add('z')
  1. 列表['A','B','A','B']去重:
lst=['A','B','A','B']
s = set(lst)
lst = list(s)
print(lst)
  1. 求两个集合{6, 7, 8}{7, 8, 9}中不重复的元素(差集指的是两个集合交集外的部分):
set_1={6,7,8}
set_2={7,8,9}
set=set_1-set_2
  1. {'A', 'B', 'C'}中元素在 {'B', 'C', 'D'}中出现的次数:
set_1={'A','B','C'}
set_2={'A','B','D'}
lst_1=list(set_1)
lst_2=list(set_2)
i=0
while i<len(lst_1):
    temp=lst_1[i]
    j=0
    count=0
    while j<len(lst_2):
        if temp==lst_2[j]:
            count += 1
        j += 1
    i += 1
    print('%c'%temp)
    print('Appearance is: %d'%count)

练习题(序列):

  1. 怎么找出序列中的最大、小值:
    ☞ 用内置函数max(sub)min(sub)
  2. sort()sorted()区别
    sorted方法会在内存中创建一个新的列表对象并在其中对列表元素进行排序;sort方法☞直接在原始列表上进行排序;sorted方法有返回值,sort方法无返回值。
  3. 怎么快速求1到100所有整数相加之和:
    ☞用range写1到100的序列,在用求和函数即可。
  4. 求列表[2,3,4,5]中每个元素的立方根:
    ☞用循环体拎出每个元素,用result = value ** (1 / root)函数进行开方处理即可。
  5. [‘x’,‘y’,‘z’] [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式:
    ☞用zip(iter1 [,iter2 [...]])函数压缩即可。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值