写点什么

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签约作者 2020.11.10 加入

文章首发于公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术

评论

发布
暂无评论
Python基础详解(二)_Python_五分钟学大数据_InfoQ写作社区