Python 基础详解(二)
作者:五分钟学大数据
- 2022 年 7 月 15 日
本文字数:4163 字
阅读完需:约 14 分钟
11. Python 的字典的操作
key-value
创建补充
fruit = {"apple": 1, "pear": 2, "banana": 3} print(fruit) print(type(fruit)) d1 = dict(zip(["Apple", "pear", "bababa"], [1, 2, 3])) print(d1) print(d1.keys()) print(d1.values()) print(d1.items()) d2 = dict(Apple=1, Pear=2, Bnanna=3) print(d2) #1-key是需要具备什么结构的才可以充当?答案:可Hash的 print(hash("apple")) print(hash("pear")) # print(hash(["pear"]))#TypeError: unhashable type: 'list' print(hash(("1000"))) ssss_ = {"apple": 1, "banana": 2, ("ssss"): 3}#TypeError: unhashable type: 'list' print(ssss_) #2-key是不可以重复的部分,如果重复的key需要理解业务含义 pear_ = {"Apple": 1, "pear": 2, "banana": 3, "pear": 100} print(pear_) # del ssss_ # print(ssss_) pear_.clear() print(pear_)
复制代码
函数的详解
# 六、字典内置函数&方法 d1 = dict(zip([1, 2, 3], ["apple", "pear", "banana"])) print(d1) # Python字典包含了以下内置函数: # 1、cmp(dict1, dict2):比较两个字典元素。---在3中去掉了方法 # 2、len(dict):计算字典元素个数,即键的总数。 print(len(d1)) # 3、str(dict):输出字典可打印的字符串表示。 print(str(d1)) # 4、type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。 # Python字典包含了以下内置方法: # 1、radiansdict.clear():删除字典内所有元素 # 2、radiansdict.copy():返回一个字典的浅复制 # 3、radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 # 如:print "fromkeys",dict_2.fromkeys(dict_2,10) # 4、radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值 print(d1.get(1)) # 5、radiansdict.__contains__(key):如果键在字典dict里返回true,否则返回false # 6、radiansdict.items():以列表返回可遍历的(键, 值) 元组数组 # 7、radiansdict.keys():以列表返回一个字典所有的键 # 8、radiansdict.setdefault(key, default=None):和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default # 9、radiansdict.update(dict2):把字典dict2的键/值对更新到dict里 d1.update({"orange":234,"ooo":45}) print(d1) # 10、radiansdict.values():以列表返回字典中的所有值
复制代码
12. set 集合
集合满足无序性、唯一性、确定性
set1 = {1, 2, 3, 5, 7, 10} print(set1) #集合的增加 set1.add("apple") print(set1) #集合的删除 set1.remove("apple") print(set1) #集合的删除 set1.discard(10) print(set1) #集合的更新 set1.update({9,8,7}) print(set1) #集合运算 # 集合的交集 set3={1,2,3,6} set2={9,8,7,6} print(set2 & set3) print(set2.intersection(set3)) # 集合的并集 print(set2 | set3) print(set2.union(set3)) # 集合的补齐 print(set2 -set3) print(set2.difference(set3))
复制代码
13. 列表表达式
求解满足条件的列表
[表达式 for 变量 in 可迭代的对象中 if 条件判断]
# 列表表达式 [表达式 for 变量 in 可迭代的对象中 if 条件判断] # 目的:求解满足条件的列表 # x*x] result = [] for x in range(10): result.append(x * x) print(result) # 等价于 result1 = [x * x for x in range(10) if x != 0] print(result1) # 等价于 # map函数的用法,就是将函数应用在序列上面去 def add(x): return x * x r1 = map(add, range(10)) print(list(r1)) # 等价于map(_.split("")).map(x=>x*2) r2 = list(map(lambda x: x * x, range(10))) print(r2) # 1.使用列表推到式实现嵌套列表的平铺(两个for循环) vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(vec) # 等价 result3 = [] for i in vec: for j in i: result3.append(j) print(result3) # 等价 result4 = [j for i in vec for j in i] print(result4) # 等价 # def re(*vec): # for i in vec: # result3.append(i) # return result3 # print(list(map(re,vec))) # 2.过滤不符合条件的元素 vec1 = [1, 2, 3, 4, -1, -2, -3, -10, 0] result5 = [] for i in vec1: if i > 0: result5.append(i) print(result5) # 等价于 result6 = [x for x in vec1 if x > 0] print(result6) # 等价于 def sub(x): if x > 0: return x else: return -1 print(list(map(sub, vec1))) # 3.列表推导中使用多个循环实现多序列元素任意的组合,并过滤元素 result7 = [] for i in range(10): for j in range(10): if i != j: result7.append((i, j)) print(result7) # 等价于 result8 = [(x, y) for x, y in zip(range(10), range(10))] print(result8) result9 = [(x, y) for x in range(10) for y in range(10) if x != y] print(result9) print(result9==result7) #4.实现列表推到式实现矩阵转置 vec3=[[1,2,3],[4,5,6],[7,8,9]] print(list(range(3))) # 012 print(list(range(0,3))) # 012 print(list(range(0,3,1))) # 012 result10=[[row[i] for row in vec3] for i in range(3)] print(result10) #zip print(list(zip([1,2,3],[4,5,6],[7,8,9]))) print(list(map(list,zip([1,2,3],[4,5,6],[7,8,9])))) ##5.使用列表推导生成100以内的所有素数 #10-----1) 2---9/10 2)2---5(2/10) 3)2----sqrt(10) sushu = [p for p in range(2, 101) if 0 not in [p % q for q in range(2, p)]] print(sushu) import numpy as np sushu1 = [p for p in range(2, 101) if 0 not in [p % q for q in range(2, int(np.sqrt(p))+1)]] print(sushu1) from functools import reduce def add(x,y): return x+y result10 =reduce(add, range(5)) print(result10) seq1 = ['foo', 'x41', '?1', '***'] print(list(filter(lambda x:x.isalnum(),seq1))) print(list(filter(lambda x:x!=0,[1,2,3,0,0,4,0,5]))) print(list(filter(None,[1,2,3,0,0,4,0,5]))) #If function is None, return the items that are true list2=["apple","pear","ok","banananna"] list2.sort(key=lambda x:len(str(x)),reverse=True) print(list2)
复制代码
14. 字典表达式/生成器表达式
生成器表达式
# 元祖表达式 (表达式 for 变量 in 可迭代的对象中 if 条件判断) 惰性求值 # x*x re1 = (x * x for x in range(10)) print(re1.__next__()) print(re1.__next__()) print(re1.__next__()) print(list(re1)) print(list(re1))
复制代码
字典表达式
# 字典表达式 {key:value for 变量 in 可迭代的对象中 if 条件判断} A=["a","b","c","d"] V=[1,2,3,4] dict1 = {key: value for key, value in zip(A, V)} print(dict1) print(type(dict1)) from collections import OrderedDict order = OrderedDict() order["apple"]=100 order["banana"]=200 print(order) print(ord("A")) print(ord("a"))#ASCII
复制代码
基本数据结构和表达式
15. 函数的结构
函数的参数和返回值
# -*- coding: utf-8 -*- # @Time : 2019/11/10 16:59 # @Author : time # @Email : load # @File : 19.0pythonFunctions.py # 函数:函数的参数+函数的返回值 # 1-没有参数没有返回值 def sayHello(): print("Hello"*5) sayHello() sayHello() sayHello() sayHello() # 2-没有参数有返回值 def syaHi(): return "Hello "*5 syaHi() syaHi() syaHi() # 3-有参数没有返回值 def addThreeNumber(a,b,c): print(a+b+c) # 4-有参数有返回值 def addThreeNumber1(a,b,c): return a+b+c X=60 def showNumber(X): print("current number is:",X) X=100 print("change number is:",X) showNumber(X) print("Final X value is:",X) Y=100 def showNumber1(): global Y print("current Y value is:",Y) Y=200 print("change Y is:",Y) showNumber1() print("Final Y is:",Y) if __name__ == '__main__': addThreeNumber(1, 2, 3) number_ = addThreeNumber1(1, 2, 3) print(number_)
复制代码
函数的参数
#默认参数 def SayHello(str="hhh",times=12): print(str*times) SayHello("Hello",10) SayHello("Hello") #关键字参数 def AddThreeNumber(a,b,c=10): print(a+b+c) AddThreeNumber(1,2,3) AddThreeNumber(c=1,b=2,a=3) AddThreeNumber(a=1,b=2) #变长参数 def printFunctions(fparamters,*tuples1,**dict1): print("paramberts",fparamters) print("tuples1:",tuples1) print("dict1:",dict1) printFunctions(1,2,3,"apple","pear",name="Zhsngan",age=12) vec=[[1,2,3],[4,5,6],[7,8,9]] print(*vec) print(list(zip([1,2,3],[4,5,6],[7,8,9]))) print(list(zip(*vec))) vec1=[1,2,3] print(*vec1) def addThreeNumber(a,b,c): print(a+b+c) addThreeNumber(*vec1) def demo1(*p): print(p) demo1(1,2,3) demo1(1,2,3,34) def demo2(**p): for item in p.items(): print(item) demo2(x=1,y=2,z=3) #key和value形式
复制代码
lambda 表达式
# 语法:lambda 变量:表达式 # x*x #lambda匿名函数---没有名字 g = lambda x: x * x print(g(10)) x_x = (lambda x: x * x)(10) print(x_x) #map m = list(map(str, range(10))) print(m) print(type(m))
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 4
版权声明: 本文为 InfoQ 作者【五分钟学大数据】的原创文章。
原文链接:【http://xie.infoq.cn/article/978ea50489e50d7bc45e3e8f0】。文章转载请联系作者。
五分钟学大数据
关注
InfoQ签约作者 2020.11.10 加入
文章首发于公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术










评论