zoukankan      html  css  js  c++  java
  • python notes

    • 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 函数名 = lambda 参数 :返回值
    •  pass的作用

      pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句

    • # a == str3 True    ==  ---> 只需要内容相等
      # a is str3 False   is  ---> 只需要内存地址相等
    • https://www.cnblogs.com/abclife/p/11483372.html
    • 谈谈Python的深浅拷贝?以及实现方法和应用场景。

      浅拷贝只是增加了一个指针指向一个存在的地址,

      而深拷贝是增加一个指针并且开辟了新的内存,这个增加的指针指向这个新的内存,
      采用浅拷贝的情况,释放内存,会释放同一内存,深拷贝就不会出现释放同一内存的错误

    • Python的可变类型和不可变类型?

      可变数据类型:列表、字典、可变集合

      不可变数据类型:数字、字符串、元组、不可变集合

    • 列举常见的内置函数

      abs()

      返回数字的绝对值

      map

      复制代码
      复制代码
      根据函数对指定序列做映射
      map()函数接收两个参数,一个是函数,一个是可迭代对象,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

      返回值:
        Python2 返回列表
        Python3 返回迭代器

      例子1: def mul(x): return x*x n=[1,2,3,4,5] res=list(map(mul,n)) print(res) #[1, 4, 9, 16, 25]

      例子2:abs() 返回数字的绝对值
      ret = map(abs,[-1,-5,6,-7])
      print(list(ret))
      # [1, 5, 6, 7]
      复制代码
      复制代码

      filter

      复制代码
      复制代码
      filter()函数接收一个函数 f(函数)和一个list(可迭代对象),这个函数 f的作用是对每个元素进行判断,返回 True或 False,
      filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
      def is_odd(x):
          return x % 2 == 1
      
      v=list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17]))
      print(v)  #[1, 7, 9, 17]
      复制代码
      复制代码

      map与filter总结

      复制代码
      复制代码
      # filter 与 map 总结
      # 参数: 都是一个函数名 + 可迭代对象
      # 返回值: 都是返回可迭代对象
      # 区别:
      # filter 是做筛选的,结果还是原来就在可迭代对象中的项
      # map 是对可迭代对象中每一项做操作的,结果不一定是原来就在可迭代对象中的项
      复制代码
      复制代码

      isinstance ype

      复制代码
      复制代码
      isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
      isinstance() 与 type() 区别:
      type() 不会认为子类是一种父类类型,不考虑继承关系。
      isinstance() 会认为子类是一种父类类型,考虑继承关系。
      如果要判断两个类型是否相同推荐使用 isinstance()。
      # 例一
      a = 2
      print(isinstance(a,int)) # True
      print(isinstance(a,str)) # False # type() 与 isinstance() 区别 class A: pass class B(A): pass print("isinstance",isinstance(A(),A)) # isinstance True print("type",type(A()) == A) # type True print('isinstance',isinstance(B(),A) ) # isinstance True print('type',type(B()) == A) # type False
      复制代码
      复制代码

      zip 拉链函数

      复制代码
      复制代码
      # zip 拉链函数,
      # 将对象中对应的元素打包成一个个元组,
      # 然后返回由这些元组组成的列表迭代器。
      # 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
      print(list(zip([0,1,3],[5,6,7],['a','b'])))
      # [(0, 5, 'a'), (1, 6, 'b')]
      复制代码
      复制代码
      复制代码
      复制代码
      zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
      >>>a = [1,2,3]
      >>> b = [4,5,6]
      >>> c = [4,5,6,7,8]
      >>> zipped = zip(a,b)     # 打包为元组的列表
      [(1, 4), (2, 5), (3, 6)]
      >>> zip(a,c)              # 元素个数与最短的列表一致
      [(1, 4), (2, 5), (3, 6)]
      >>> zip(*zipped)          # 与 zip 相反,可理解为解压,返回二维矩阵式
      [(1, 2, 3), (4, 5, 6)]
      复制代码
      复制代码

      reduce

      复制代码
      复制代码
      '''
      reduce()  函数
      reduce() 函数会对参数序列中元素进行累积
      函数将一个数据集合(链表、元组等)中的所有数据进行下列操作
      '''
      
      注意:
      Python3已经将reduce() 函数从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:
      
      from functools import reduce
      def add(x,y):
          return x + y
      
      print(reduce(add,[1,2,3,4,5]))
      #  15
      
      print(reduce(lambda x, y: x+y, [1,2,3,4,5]))  # 15
      
      print(reduce(add,range(1,101)))
      #  5050

      内置函数:map、reduce、filter的用法和区别

      map:根据函数对指定序列做映射

      复制代码
      复制代码
      map
      参数
      接收两个参数:一个是函数,一个是序列(可迭代对象)
      返回值
      Python2 返回列表
      Python3 返回迭代器
      
      # 例子:
      # abs() 函数返回数字的绝对值
      # 新的内容的个数等于原内容的个数
      # ret = map(abs,[-1,-5,6,-7])
      # print(list(ret))
      # [1, 5, 6, 7]
      复制代码
      复制代码

      filter:过滤函数 新的内容少于等于原内容的时候。才能使用filter

      复制代码
      复制代码
      filter() 函数用于过滤序列,过滤不符合条件的元素,返回由符合条件元素组成的心列表
      
      参数:
      function  函数
      iterable  可迭代对象
      返回值:
      返回列表
      
      # 筛选大于10的数
      def is_odd(x):
          if x>10:
              return True
      
      ret = filter(is_odd,[1,4,5,7,8,9,76])  # 为迭代器
      print(list(ret))
      # [76]
      复制代码
      复制代码

      reduce:对于序列内所有元素进行累计操作

      复制代码
      复制代码
      '''
      reduce()  函数
      reduce() 函数会对参数序列中元素进行累积
      函数将一个数据集合(链表、元组等)中的所有数据进行下列操作
      '''
      
      from functools import reduce
      def add(x,y):
          return x + y
      
      print(reduce(add,[1,2,3,4,5]))
      #  15
      
      print(reduce(lambda x, y: x+y, [1,2,3,4,5]))  # 15
      
      print(reduce(add,range(1,101)))
      #  5050

      re的match和search区别?

      re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

      re.search 扫描整个字符串并返回第一个成功的匹配。

      什么是正则的贪婪匹配?

      匹配一个字符串没有节制,能匹配多少就去匹配多少,知道没有匹配的为止

      #  <generator object <genexpr> at 0x00000000020CEEB8> 生成器
      # 在Python中,有一种自定义迭代器的方式,称为生成器(Generator)。
      # 定义生成器的两种方式:
      # 1.创建一个generator,只要把一个列表生成式的[]改成(),就创建了一个generator:
      # generator保存的是算法,每次调用next(),就计算出下一个元素的值,直到计算到最后一个元素,
      没有更多的元素时,抛出StopIteration的错误。 # 2.定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,
      而是一个generator



      如何实现 “1,2,3” 变成 [‘1’,’2’,’3’]

      list("1,2,3".split(','))


      如何实现[‘1’,’2’,’3’]变成[1,2,3]

      复制代码
      复制代码
      [int(x) for x in ['1','2','3']]
      
      
      python 里如何把['1','2','3'] 变成[1,2,3]
      
      a = ['1','2','3']
      b = [int(i) for i in a]
      print(b)
      # [1, 2, 3]

      一行代码实现删除列表中重复的值

      list(set([1, 2, 3, 4, 45, 1, 2, 343, 2, 2]))

      请用代码简答实现stack

      • Stack() 创建一个新的空栈
      • push(item) 添加一个新的元素item到栈顶
      • pop() 弹出栈顶元素
      • peek() 返回栈顶元素
      • is_empty() 判断栈是否为空
      • size() 返回栈的元素个数

      常用字符串格式化哪几种?

      1.占位符%

      %d 表示那个位置是整数;%f 表示浮点数;%s 表示字符串。

      print('Hello,%s' % 'Python')
      print('Hello,%d%s%.2f' % (666, 'Python', 9.99)) # 打印:Hello,666Python10.00

      2.format

      print('{k} is {v}'.format(k='python', v='easy'))  # 通过关键字
      print('{0} is {1}'.format('python', 'easy'))      # 通过关键字









  • 相关阅读:
    CodeForces
    hdu4003 树形dp
    hdu2196
    poj2486
    hdu1502 树形dp入门题
    cf 686D
    bzoj2763 分层图
    hdu4424 并查集+贪心+思维
    poj1734 最小环+输出路径
    集训题解1
  • 原文地址:https://www.cnblogs.com/lutong1989/p/14946361.html
Copyright © 2011-2022 走看看