- 基础数据的补充
1. join: 把列表中的数据进行拼接。 拼接成字符串
# 字符串转化成列表: split()
# 列表转化成字符串:join()
2. 关于删除:
列表和字典在循环的时候都不能删除。
把要删除的内容保存在新列表中。 循环新列表, 删除老列表(字典)
3. fromkeys
dict.fromkeys(iter, value)
把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典
坑1: 返回新字典。不会改变原来的字典
# fromkeys是创建新字典。 不是在原有的基础上给你增加键值对
# fromkeys是一个staticmethod 静态方法.
dic = {}
dic.fromkeys(xxx, xxx)
print(dic) # {}
坑2:
# 你的value如果是可变的数据类型。 所有的key都可以改动这个数据。 一个改动,所有的value都跟着改变
d = fromkeys(xxx.[])
字典中的所有的value都是同一个列表
2.集合
set集合 (集合本身是可变的 不可哈希 ,集合里的元素是不可变的 ,可哈希)
创建 a = set()
特点:无序不重复。 内部元素必须可哈希
集合使用最多就是 去重 。
# # 应用(重点) 去重复
# lst = ["周一", "周一", "王二", "王二", "胡辣汤"]
# s = set(lst) # 集合
# print(s)
# # 转化成列表
# print(list(s))
# frozenset 把集合变成 可哈希的, 不可变.
s = frozenset(["赵山", "刘能", "⽪山", "⻓跪"])
dic = {s:'123'} # 可以正常使用了
print(dic)
这个不是很常用. 了解一下就可以了
3.深浅拷贝
1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址
2. copy() [:] 浅拷贝。 拷贝第一层内容 浅拷贝.
只会拷贝第一层. 第二层的内容不会拷⻉. 所以被称为浅拷贝
3. 深拷贝
import copy
copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份
作用: 快速创建对象
深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产生⼀个改变另一个跟着改变的问题
一个面试题:
a = [1, 2]
a[1] = a
print(a[1])
昨日作业讲解:
# 4.车牌区域划分, 现给出以下车牌. 根据车牌的信息,
# 分析出各省的车牌持有量. (升级题)
# cars = ["鲁A32444", "鲁B12333","鲁A32444", "鲁B12333","鲁A32444", "鲁B12333", "京B8989M", "黑C49678", "黑C46555", "沪B25041"]
# locations = {'沪': "上海", "黑": "黑龙江", "鲁": "山东", "鄂": "湖北", "湘": "湖南", "京": "北京"}
# # 结果
# result = {}
# for car in cars: # 车牌子 "鲁A32444"
# c = car[0] # 鲁
# local = locations[c] # 山东
#
# # result[local] = result.setdefault(local, 0) + 1
#
# if result.get(local): # 原来出现过
# result[local] = result[local] + 1
# else: # 第一次出现
# result[local] = 1
#
# print(result)