主要内容: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