zoukankan      html  css  js  c++  java
  • python面试题

    1.字典安装value值进行排序

    d = {'a': 24, 'g': 52, 'i': 12, 'k': 33}
    a = sorted(d.items(), key=lambda x: x[1], reverse=True)

    2.反转字符串

     1 b = "ab12cd345g"
     2 
     3 # 方法1使用字符串切片
     4 c = b[::-1]
     5 print(c)
     6 # 方法2使用列表的reverse方法
     7 d = list(b)
     8 d.reverse()
     9 d = "".join(d)
    10 print(d)
    11 # 方法3.使用reduce
    12 e = reduce(lambda x, y: y + x, b)
    13 print(e)
    14 
    15 
    16 # 方法4.使用递归
    17 def funcg(s):
    18     if len(s) < 1:
    19         return s
    20     return funcg(s[1:]) + s[0]
    21 
    22 
    23 f = funcg(b)
    24 print(f)
    25 
    26 
    27 # 方法5使用栈
    28 def funcz(s):
    29     l = list(s)
    30     result = ""
    31     while len(l) > 0:
    32         result += l.pop()
    33     return result
    34 
    35 
    36 g = funcz(b)
    37 print(g)
    38 
    39 
    40 # 方法6 for循环
    41 
    42 def funf(s):
    43     result = ""
    44     max_index = len(s) - 1
    45     for index, value in enumerate(s):
    46         result += s[max_index - index]
    47     return result
    48 
    49 
    50 h = funf(b)
    51 print(h)

    3 .is和==的区别

    is用来判断两个对象是否指向同一个地址空间,==用来判断同一类型的对象的值是否相等

     1 x = y = [4, 5, 6]
     2 z = [4, 5, 6]
     3 print(id(x))
     4 print(id(y))
     5 print(id(z))
     6 print(type(x))
     7 print(type(y))
     8 print(type(z))
     9 print(x == y)
    10 print(x == z)
    11 print(x is y)
    12 print(x is z)

    4.python删除一个列表中的重复数据

     1 a = [1, 2, 3, 5, 4, 6, 1, 2, 3]
     2 
     3 #方法1直接set去重
     4 b = list(set(a))
     5 print(b)
     6 
     7 #方法2循环去重
     8 new_list = []
     9 while a:
    10     b = a.pop()
    11     if b not in new_list:
    12         new_list.append(b)
    13 print(new_list)

    5 判断代码的输出结果

    解注参考https://segmentfault.com/a/1190000016577391

    1 def multi():
    2     return [lambda x: x * i for i in range(4)]
    3 
    4 
    5 print([m(3) for m in multi()])
    6 
    7 #[9, 9, 9, 9]

    6 python中类方法、类实例方法、静态方法有何区别

    实例方法
    
        定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
    
        调用:只能由实例对象调用。
    
    类方法
    
        定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
    
        调用:实例对象和类对象都可以调用。
    
    静态方法
    
        定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
    
        调用:实例对象和类对象都可以调用。

    7 python中如何动态获取和设置对象的属性

     dir([obj]):
        调用这个方法将返回包含obj大多数属性名的列表(会有一些特殊的属性不包含在内)。obj的默认值是当前的模块对象。
     hasattr(obj, attr): 
        这个方法用于检查obj是否有一个名为attr的值的属性,返回一个布尔值。
     getattr(obj, attr): 
        调用这个方法将返回obj中名为attr值的属性的值,例如如果attr为’bar’,则返回obj.bar。
     setattr(obj, attr, val):
        调用这个方法将给obj的名为attr的值的属性赋值为val。例如如果attr为’bar’,则相当于obj.bar = val
    obj.__dict__:
       查看当前对象有哪些方法和属性

    8 python重载机制

    Python是动态类型语言,不需要声明变量类型,函数中可以接受任何类型的参数也就无法根据参数类型来支持重载,
    python没有必要去考虑参数的类型问题,这些都可以在函数内部判断处理,并无必要去在写一个函数。
    python 有多种传参方式,默认参数/可变参数/可变关键字参数可以处理函数参数中参数可变的问题,
    在python可以通过singledispatch转发机制来实现函数
  • 相关阅读:
    CentOS+Nginx+PHP+MySQL详细配置(图解)
    linux下MySQL安装登录及操作
    hdu 1059 多重背包
    hdu 1754 单点更新
    poj 3264 RMQ 水题
    hdu 1114 基础完全背包
    hdu 3466 排序01背包
    poj 2923 状压dp+01背包
    hdu 2639 第k大01背包
    hdu 2184 01背包变形
  • 原文地址:https://www.cnblogs.com/yinyitianya/p/11819932.html
Copyright © 2011-2022 走看看