2.2.2 数据集合
字典:dict 创建字典
集合:set 创建集合
frozenset() 创建一个冻结的集合,
注:
冻结的集合不能进行添加和删除操作。
2.2.3 内置函数
len() 返回对象中的元素的个数
sorted() 对可迭代对象进行排序操作 (lamda)
语法:sorted(Iterable, key=函数(排序规则), reverse=False)
Iterable: 可迭代对象
key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数。根据函数运算的结果进行排序
reverse: 是否是倒叙. True: 倒叙, False: 正序
代码展示:
#定义list lst = [25,7,16,92,11,63,889,100,1] # sort是list里面的一个方法 lst.sort() #输出结果:[1, 7, 11, 16, 25, 63, 92, 100, 889] print(lst) # 内置函数. 返回一个新的且被排序的列表 lat = sorted(lst) #输出结果:[1, 7, 11, 16, 25, 63, 92, 100, 889] print(lat) #倒序 ldt = sorted(lst,reverse=True) #输出结果:[889, 100, 92, 63, 25, 16, 11, 7, 1] print(l2)
结果截图:
enumerate() :获取集合的枚举对象
lst = ['one','two','three','four','five'] # 同时获取索引和元素,索引默认从0开始,但是可更改 for index, el in enumerate(lst,1): print(index) print(el)
结果截图:
all(): 迭代对象全部为True,才返回True any() :迭代对象一个为True,就返回True #输出结果:True print(all([11,'carl_奕然',True])) #输出结果:True print(any([99,False,'Nice',97,True]))
结果截图:
zip() :将可迭代的对象作为参数, 把对象中对应的元素打包成一个元组, 返回列表。
注
如果各个迭代器的元素个数不一致, 则返回列表长度与最短的对象相同。
lst1 = [1, 2, 3, 4, 5, 6] lst2 = ['异型', '小兵张嘎', '急速快递', '人生不可重来', '这是一道伪命题', '白马王子的一生'] lst3 = ['MA', 'CN', 'FR', 'ITA', 'KR', 'SE'] print(zip(lst1, lst1, lst3)) for sa in zip(lst1, lst2, lst3): print(sa)
结果截图:
fiter() :过滤 (lamda)
语法:fiter(function. Iterable)
function: 用来筛选的函数。
①在filter中会自动的把iterable中的元素传递给function;
②然后根据function返回的True或者False来判断是否保留留此项数据 ,
Iterable: 可迭代对象。
# 判断奇数 def func(i): return i % 2 == 1 lst = [11,22,33,44,55,66,77] #ls是迭代器 la = filter(func, lst) #<filter object at 0x000001CE3CA98AC8> print(la)
结果截图:
map() :根据提供的函数对指定序列做映射(lamda)
语法 : map(function, iterable)
注:
可以对可迭代对象中的每一个元素进行映射。
分别去执行 function
def f(i): return i lst = [11,12,13,14,15,16,17] # 把可迭代对象中的每一个元素传递给前面的函数进行处理并返回迭代器 st = map(f, lst) print(list(it))
截图截图:
2.3 作用域相关
locals() :返回当前作用域中的名字
globals() :返回全局作用域中的名字
def func(): a = 10 # 打印当前作用域中的内容 print(locals()) # 打印全局作用域中的内容 print(globals()) print("打印全部内容") func()
结果截图:
2.4 迭代器生成器相关
range() :生成数据
next() :迭代器向下执行一次, 内部实际使⽤用了__ next__()方法返回迭代器的下一个项目
iter() :获取迭代器, 内部实际使用的是__ iter__()方法来获取迭代器
for i in range(25,-1,-3): print(i)
结果截图:
lst = [11,12,13,14,15] st = iter(lst) # __iter__()获得迭代器 print(st.__next__()) #第一次 print(next(st)) #第二次 print(next(st))
结果截图:
2.5 字符串类型代码的执行
eval() :执行字符串类型的代码. 并返回最终结果
exec() :执行字符串类型的代码
compile(): 将字符串类型的代码编码。代码对象能够通过exec语句来执行或者eval()进行求值
#输入:8+9 st1 = input("请输入a+b:") # 17 可以动态的执行代码. 代码必须有返回值 print(eval(st1)) st2 = "for i in range(9): print(i)" # exec 执行代码不返回任何内容 ast = exec(st2) print(ast) #None
结果截图:
# 动态执行代码 exec(""" def func(): print(" 我是Carl_奕然") """ ) func() #我是Carl_奕然
结果截图:
code1 = "for i in range(9): print(i)" # compile并不会执行你的代码.只是编译 cst = compile(code1, "", mode="exec") # 执行编译的结果 exec(com)
结果截图:
code2 = "1+2+3+4" cst2 = compile(code2, "", mode="eval") print(eval(cst2))
结果截图:
code3 = "sexuality = input('请输入你的性别:')" cst3 = compile(code3, "", mode="single") exec(cst3) print(sexuality)
结果截图:
2.6 输入输出
print() : 打印输出
input() : 获取用户输出的内容
#sep:打印出的内容用什么连接,end:以什么为结尾 print("Hello", "Carl_奕然", sep=",", end="★")
结果截图:
2.7 内存相关
hash() : 获取到对象的哈希值(int, str, bool, tuple)。
hash算法:
目的是唯一性
dict 查找效率非常高,
hash表:用空间换的时间 比较耗费内存。