面试题(一)

生成器(一):面试题

def add(a,b): #这里是一个求和函数 a+b
    return a+b
def test():   #这是一个生成器函数 0-3
    for r_i in  range(4):
        yield r_i
g= test() #生成器g
for n in [2,10]:
    g = (add(n,i) for i in g)
print(list(g))

"""
n = 2
g = (add(n,i) for i in g) 这里只是记录一下代码 其实这也是一个生成器
并没有往外拿值 相当于 g1 = (add(n,i) for i in g)
n = 10
g = (add(n,i) for i in g1) 这里相当于把g变成g1代入
最后 g = (add(n,i) for i in (add(n,i) for i in g))
最后 g = (add(10,i) for i in (add(10,i) 0,1,2,3))
最后list(g) 才开始带入值 n =10 for i in g 0-3
最后往里边放值就对了
"""

生成器(二)面试题

def func():  #生成器函数
      yield 222
g = func()
g1 =(i for i in g) #生成器表达式
g2 = (i for i in g1)
print(list(g))  [222]
print(list(g2))  []
print(list(g3))  []

冒泡排序: 相邻两个元素比较,小的往上升,大的往下沉

l = [4,3,2,1]
for i in range(1,len(l):
  for j in range(n-i):
     if l[j] > l[j+1]:
        l[j],l[j+1] = l[j+1],l[j]
print(l)

#冒泡排序 小的向上升 重的向下沉
#相邻的两个元素做比较 01 12 23
l=[4,3,2,1]
##1st
## 3,4,2,1
## 3,2,4,1
## 3,2,1,4 4
##2nd
## 2,3,1,4
## 2,1,3,4 4
##3rd
## 1,2,3,4 4
#循环的次数和列表中元素的个数有关,列表的长度有关,len(l)
#小轮的次数+大轮的轮次=len(l)

选择排序: 用相同下标的元素,跟其他下标元素作比较

for i in range(n-1):
   for j in range(i+1,n):
      if l[i] > l[j]:
         l[j],l[i] = l[i],l[j]
print(l)

#用相同下标的元素,和其它下标的元素进行比较
l=[4,3,2,1]
##1st#下标为0的元素和其它元素进行比较
## 3,4,2,1
## 2,4,3,1 n-1-i
## 1,4,3,2 4-1-0
## #最小的放在了最前面,下标为1的元素,和其它元素进行比较
##2nd
## 1,3,4,2
## 1,2,4,3 4-1-1
##3rd #下标为2的元素,和下标为3的元素比较
## 1,2,3,4 4-1-2

3.深浅拷贝
import copy
浅拷贝: l[:](切片方式) l.copy()
深拷贝 l.deepcopy.copy()
对于不可变数据类型元素,比如int,str,无论深浅拷贝,其内存地址都不会发生变化
浅拷贝: 只是对第一层的拷贝,外围地址发生变化.
深拷贝: 有几层拷贝几层 ,外围地址也变化
4. python 2 range xrange python2 中 range返回列表 xrange是个生成器
python3 中range 和python2 xrange中一样 都是生成器

 5.lamdad可能的函数题:

suiyi = lambda x, y : 1, 2   # 笔试题
print(suiyi)
print(suiyi(250,38))

#(<function <lambda> at 0x000001E8E1D59158>, 2)

#TypeError: 'tuple' object is not callable

说白了suiyi是一个元组,(lamdad x,y :1 ,2)

posted @ 2021-01-15 14:45  苦行僧冬*婷  阅读(74)  评论(0)    收藏  举报