python基础教学day04--集合和字典

42 篇文章 0 订阅
39 篇文章 0 订阅

主要内容:1、集合 2、字典

一、集合的创建与使用

1、集合是一个无序的不重复序列。
2、集合的创建:
***1)可以使用大括号{}或者set()函数创建集合;
***2)**注:**创建一个空集合必须使用set()不可以使用{}来创建空集合。
3、集合会自动将重复的元素删除
在这里插入图片描述
4、集合应用案例
例一:可以使用集合对抓取的img结果(list类型)进行排序

传统去重方法如下:
在这里插入图片描述
使用集合去重如下:
在这里插入图片描述
例二:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了10个1到10之间的随机整数,对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从大到小排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

import random
num = []
#随机生成10个1到10的列表
for i in range(10):
    random_num = random.randint(1,10)
    num.append(random_num)
print('随机生成的列表如下',num)
#对列表进行去重
num = list(set(num))
#进行排序
num.sort(reverse=True)
print('最终的列表是:',num)

运行结果:

随机生成的列表如下 [1, 6, 6, 8, 6, 4, 2, 5, 2, 7]
最终的列表是: [8, 7, 6, 5, 4, 2, 1]

二、 字典的创建和使用

1、字典是一种可变容器模型,且可存储任意类型对象。
字典中键是唯一的,但是重复最后一个键值会替换前面的,值不需要唯一。
2、创建字典
1)使用简单的字典创建
在这里插入图片描述
2)使用fromkeys方法创建
在这里插入图片描述
3)使用zip方法创建

userInfo = zip(['name','age'],['chen',20])
print(dict(userInfo))

运行结果

{'name': 'chen', 'age': 20}

3、字典的删除和添加
1)字典是一种动态结构,可以随时向其中添加键值对。
在这里插入图片描述
2)修改字典的值
在这里插入图片描述
3)删除字典的元素
使用del语句将相应的“键值对”信息彻底的删除。使用时必须指定要删除的键
在这里插入图片描述

三、字典的遍历

1)可以使用for循环依次遍历字典的键值对

user = {
    '网名':'飞翔的小鸟',
    '外号':'飞鸟',
    '职业':'程序员'
}
for key,value in user.items():
    print('\nkey:'+ key)
    print('\nvalue:'+ value)

结果如下

key:网名

value:飞翔的小鸟

key:外号

value:飞鸟

key:职业

value:程序员

2)使用keys遍历所有的键
在这里插入图片描述
3)按照次序变量键的值
在这里插入图片描述
4)遍历所有的值
在这里插入图片描述

四、字典的内置方法

1)使用方法clear()清空字典
在这里插入图片描述
2)使用方法copy()复制字典
在这里插入图片描述
3)使用get(key,None)方法获取指定的键值
如果字典中又可key所对应的值则返回key的值
如果没有则返回None
在这里插入图片描述
4)使用setdefault()获取指定的键值
格式:dict.setdefault(key,defult=None)与get类似如果键值不存在返回defult
5)使用update()方法修改字典
语法:dict.update(dict1)
在这里插入图片描述

例一:有一个列表,其中包括 10 个元素,例如这个列表是[1,2,3,4,5,6,7,8,9,0],要求将列表中的每个元素一次向前移动一个位置,第一个元素到列表的最后,然后输出这个列表。最终样式是[2,3,4,5,6,7,8,9,0,1]

raw = [1,2,3,4,5,6,7,8,9,0]
print('修改前:',raw)
raw1 = raw.pop(0)
raw.append(raw1)
print('修改后:',raw)

运行如下

修改前: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
修改后: [2, 3, 4, 5, 6, 7, 8, 9, 0, 1]

例二:按照下面的要求实现对列表的操作:

1). 产生一个列表,其中有 40 个元素,每个元素是 50 到 100 的一个随机整数
2). 如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数
3). 对上面的列表元素从大到小排序并输出li.sort(reverse=True)

import random
grade = []
sum = 0
for i in range(40):
    grade_random = random.randint(50,100)
    grade.append(grade_random)
    sum += grade_random
grade_mean = sum / len(grade)
print('平均数为:',grade_mean)
grade.sort(reverse=True)
print('排序后为:',grade)

运行结果

平均数为: 75.55
排序后为: [100, 100, 96, 96, 93, 93, 91, 90, 87, 87, 85, 84, 81, 81, 80, 78, 78, 77, 77, 76, 75, 75, 74, 74, 73, 71, 71, 67, 66, 66, 66, 65, 65, 60, 57, 57, 55, 54, 51, 50]

例三:

如果将一句话作为一个字符串,那么这个字符串中必然会有空格(这里仅讨论英文),比如"How are you.",但有的时候,会在两个单词之间多大一个空格。现在的任务是,如果一个字符串中有连续的两个空格,请把它删除。

string = "I love you"
print('英文句子为:',string)
#运用split方法以空格为条件进行切割
str_lip = string.split(" ")
print('切割后为:',str_lip)
#将单词依次存放在新的列表中
words = [i for i in str_lip if i != " " ]
new_words = ''.join(words)
print('所有的单词有:',new_words)

运行结果

英文句子为: I love you
切割后为: ['I', 'love', 'you']
所有的单词有: Iloveyou
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值