码迷,mamicode.com
首页 > 其他好文 > 详细

面试题总结

时间:2019-04-22 18:07:20      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:合规   code   http   简单   函数   inf   local   第一个   findall   

1、

def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
f(2)
f(3,[3,2,1])
f(3)

考查知识点:列表,深浅copy。弄清楚就ok

[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]

2、

用python , 123456789变成987654321‘

技术图片

太简单

考查知识点:切片

3、

python 的re模块中match() search()findall() compile()的区别

match与search函数功能一样,match匹配字符串开始的第一个位置,search是在字符串全局匹配第一个符合规则的。
简单来说就是:
    re.match与re.search的区别:re.match只匹配字符串的开始,
    如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
    而re.search匹配整个字符串,直到找到一个匹配。
re.findall函数返回的总是正则表达式在字符串中所有匹配结果的列表list,此处主要讨论列表中“结果”的展现方式,即findall中返回列表中每个元素包含的信息。
使用re的一般步骤是先使用re.compile()函数,将正则表达式的字符串形式编译为Pattern实例,
然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。

 

4、a/b/.././c/技术图片estips变成a/c/test.jpg变成a/c/test.jpg

为上一级为本级  

稍微欠缺的方法,这个写死了:

s="a/b/.././c/test.jpg"
s1=s.split("/")
s1.pop(s1.index("..")-1)
s1.pop(s1.index(".."))
s1.pop(s1.index("."))
l = []
for i in s1:
    l.append(i)
print("/".join(l))

正常思路:

s="a/b/.././c/test.jpg"
s1=s.split("/")
l = []
for i in s1:
    if i == "..":
        l.pop()
    elif i == ".":
        continue
    else:
        l.append(i)
print("/".join(l))

考查知识点:列表的几个常用方法

 5、

99乘法表

for x in range(1, 10):
    for y in range(1, x+1):
        print("%s*%s=%s" % (y, x, x * y), end= )
    print()  # print默认参数‘换行’,没有此条语句输出打印时将不会换行

一行代码实现:

print(‘\n‘.join([‘ ‘.join([‘{}*{}={}‘.format(y,x,y*x) for y in range(1, x+1)]) for x in range(1,10)]))

6、

找到1000以内的龙腾数,各个位数的和为5的数为龙腾数
for i in range(1000):
    a = i // 100    # 获得百位上的数字
    b = i // 10 % 10  # 获得十位数的数字
    c = i % 10   # 获得个位数的数字
    if a + b + c == 5:
        print(i)

主要思路:怎么获取百位数字,用这个数整除100就会得到百位上的数字

     怎么获取十位数字,用这个数整除10再对10取余,就会得到十位上的数字

     怎么获取个位上的数字,用这个数对10取余就会得到个位上的数字

7、

python给一个有序列表,求出插入值的索引
def index(nlist, k):
    if k < nlist[0]:   # 假如插入的元素比第一个元素小,则就直接插在第一个元素的位置,第一个元素的索引是0
        p = 0
    elif k > nlist[-1]:  # 假如插入的元素比最后一个元素大,则就直接插在最后元素的位置,最后一个元素的索引为len(l)-1
        p = len(nlist) - 1
    else: 
        p = 0      # p=0归位
        for item in nlist:  # 然后对传过来的列表进行循环打印
            if k < item:    # 判断插入的元素的大小
                break      # 直到插入的元素大于item了
            p += 1
    return p


lis = [1, 3, 5, 7, 8, 9, 11]
result = index(lis, 10)
print(result)

8、

赋值是指向同一个对象吗

在python中,对象的赋值就是简单的对象引用
赋值操作(包括对象作为参数、返回值)不会开辟新的内存空间,它只是复制了新对象的引用。也就是说,除了list_b这个名字以外,没有其它的内存开销。
浅拷贝会创建新对象,其内容是原对象的引用。
深拷贝:和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。因而,它的时间和空间开销要高。
总结:赋值是指的同一个对象。
深浅拷贝都是创建了新对象。

 

 

面试题总结

标签:合规   code   http   简单   函数   inf   local   第一个   findall   

原文地址:https://www.cnblogs.com/hnlmy/p/10738087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!