24、合并两个元组到字典 a = ("liuchuanfeng", "cangjingkong") b = (20,18) # print(dict(zip(a,b)))
25、元组是不可变类型,列表是可变类型
# 元组 # a = (1,2,3,[4,5,6,7],8) # a[3] = 2 # print(a) 报错 # 列表 a = (1,2,3,[4,5,6,7],8) a[3][2] = 2 # print(a)
26、sort 和 sorted 的区别 # sort() 是可变对象列表(list)的方法,无参数,无返回值,sort() 会改变可变对象. dict1 = {'songjianguo':1, 'liuleqian':2} list1 = [2, 1, 3] # print(list1.sort()) # print(list1)
dict1 = {'songjianguo':1, 'liuleqian':2} list1 = [2, 1, 3] # print(sorted(dict1)) # print(sorted(list1))
27、Python 中的 GIL # GIL 是 Python 的全局解释器锁,同一进程中假如有多个线程运行, # 一个线程在运行 Python 程序的时候会占用 Python 解释器(加了一把锁即 GIL), # 使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。 # 如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。 # 所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
28、将列表内的字典按value大小排序 list1 = [{'name':'liuleqian', 'age':20}, {'name':'songjianguo', 'age':22}, {'name':'qinyeyang', 'age':24}] sorted(list1, key = lambda x : x['age']) # print(list1)
29、说说ang()和all()有什么区别 # all如果存在0,Null,False 返回False,否则返回True # any如果都是0,None,False,Null 时,返回 True。 # print(all([1, 2, 3, 0])) # print(all([1, 2, 3])) # print(any([1, 2, 3, 0])) # print(any([0, None, False]))
30、反转一个整数 def reverse( x): """ :type x: int :rtype: int """ num = 0 if x == 0: return 0 if x < 0: x = -x while x != 0: num = num*10 + x%10 x = x//10 num = -num else: while x != 0: num = num*10 + x%10 x = x//10
if num>pow(2,31)-1 or num < pow(-2,31): return 0 return num # print(reverse(-261))
31、内部函数——>闭包——>装饰器 # 一、内部函数 def outer(): def inner(): x = 10
# 二、闭包 # 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用, # 那么内部函数就被认为是闭包(closure)。 n = 'hello' def outer(arg): def inner(): arg return inner f = outer(n)
# 三、装饰器 # 装饰器是一种特殊的闭包,就是在闭包的基础上传递了一个函数, # 然后覆盖原来函数的执行入口,以后调用这个函数的时候,就可以额外实现一些功能了 def outer(arg): def inner(): print("*" * 20) arg() print("*" * 20)
return inner
@outer # echo = outer(echo) # inner def echo(): print('刘乐骞NB!')
# echo()
32、实现斐波那契数列 def fib(n): if n == 0: return False if not isinstance(n, int) or (abs(n) != n): return False if n <= 1: return n return fib(n-1)+ fib(n-2)
# print([fib(i) for i in range(1, 11)]) 33、正则切分字符串 import re str1 = 'li‵‵‵uleqian songjianguo: qinyeyang' result = re.split(r":| ", str1) # print(result) 34、yield # yield 是用来生成迭代器的语法,在函数中,如果包含了 yield,那么这个函数就是一个迭代器。 # 当代码执行至 yield 时,就会中断代码执行,直到程序调用 next() 函数时,才会在上次 yield 的地方继续执行 def foryield(): print("start test yield") while True: result = yield 5 print("result:", result) g = foryield() # print(next(g)) # print("*"*20) # print(next(g)) 35、简单介绍一下继承 # 一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类, # 同时获取所有的类成员(属性和方法)。 # 支持的类型: # 1.单继承- 一个子类类继承自单个基类 # 2.多重继承- 一个子类继承自多个基类 # 3.多级继承- 一个子类继承自一个基类,而基类继承自另一个基类 # 4.分层继承- 多个子类继承自同一个基类 # 5.混合继承- 两种或两种以上继承类型的组合 36、//,%和** # //:向下取整 # %:取模 # **:幂运算 37、python异常处理 # 基本语法 # try: # 被检测的代码块 # except 异常类型: # try中一旦检测到异常,就执行这个位置的逻辑 # eg: # def func(arg): # try: # arg +=1 # except TypeError as e: # print(e)
# func('光哥')
# 主动触发异常 # try: # raise TypeError('类型错误') # except Exception as e: # print(e)
38、统计字符串中单词出现次数 from collections import Counter str1 = "ahdbgdhsjidhihisfjbaj" # print(Counter(str1)) |
|