• 面试题(一)


    1、现有两元祖  (('a'),('b'),('c'),('d') ) ,请使用Python中的匿名函数生成列表 [ {'a':'c',{'c':'d'}]

    答案:v = list(map(lambda x,y:{x:y},data[0:2],data[2:4]))
    data = (('a'),('b'),('c'),('d') )
    v = list(map(lambda x,y:{x:y},data[0:2],data[2:4]))
    data[0:2] = ('a'),('b')
    data[2:4] = ('c'),('d')
    匿名函数 传进去  参数(x,y)  返回 {x:y}
    map(func,iterable) # 对于iterable 依次 传递给 func ,返回的是可迭代对象
    答案
    2、看代码 写结果
    def multipliters():
        return [lambda x:i * x for i in range(4)]
    
    print([m(2) for m in multipliters()])
    # 第一种是 将生成器对象生成的匿名函数转化成列表 ,匿名函数使用的是相同的内存空间。
    # 转换成列表后,循环结束,命名空间里的i都为3
    def multipliters():
        return [lambda x:i * x for i in range(4)]
    
    print([m(2) for m in multipliters()])
    
    # 以下是依次返回 生成器生成的每个匿名函数,每次调用i都在变化
    def multipliters2():
        return (lambda x: i*x for i in range(4))
    print([m(2) for m in multipliters2()])
    答案

    3、  1 or 2   和   1 and 2 分别输出什么?

    # 1     2  
    # 0 "" [] {} set() None False 放入判断表达式都为假
    # or 或  and 与
    # 整个式子 不断去向右查看,直到能确定为真就停下来
    答案

    4、看代码 写结果

    value = "B" and "A" or "C" 
    print(value)
    # A
    # 整个式子 不断去向右查看,直到能确定为真就停下来
    答案

    5、看代码写结果

    v1 = [i % 2 for i in range(10)]
    v2 = (i % 2 for i in range(10))
    print(v1,v2)
    # v1 = [i % 2 for i in range(10)] 为列表生成式
    # v2 = (i % 2 for i in range(10)) 为<generator object <genexpr> at 0x00E4F990>为生成式
    答案

    6、看代码,写结果

    def extendList(val,li=[]):
        li.append(val)
        return li
    list1 = extendList(10)
    list2 = extendList(123,[])
    list3 = extendList('a')
    
    print(list1)
    print(list2)
    print(list3)
    # [10, 'a']
    # [123]
    # [10, 'a']
    # 参数变量在编译会生成,而且只会生成一次,其内存地址的指向不发生变化
    # 所以会有默认的 []
    # 1、3都会使用默认的 编译生成同一个[]
    # 2 新生成一个 [] 
    答案

    7、下面代码谁报错?

    v1 = {}
    v2 = {3:5}
    v3 = {[11,23]:5}
    v4 = {(11,23):5}
    v3错误,字典元素的键不能为可变对象
    答案

    8、输出以下结果

    for i in range(5,0,1):
        print(i)
    # range(起始元素,结束元素(不包含),每次的变化)
    # 5 每次加1,啥时候能加到0,O(∩_∩)O哈哈~
    答案

    9、请说出range和xrange的区别

    # from collections import Iterable,Iterator
    # Iterable 可迭代对象
    # Iterator 迭代器 
    # print(isinstance(xrange(10),Iterator))
    # print(isinstance(xrange(10),Iterable))
    
    # python2 中 range(start, stop[, step]) 和 range(stop) 会生成-> range object,,返回是列表,是可迭代对象,全部放在内存里
    # python2 中 xrange(start, stop[, step]) 和 range(stop)会生成-> xrange object,返回是可迭代对象,每次调用时才会生成
    
    # python3 没有xrange,只有range,也是可迭代对象,每次调用时才会生成
    答案

    10、请将 "1,2,3",变成 ["1","2","3"]

    "1,2,3".split(',')
    答案

    11、一行代码生成 [1,4,9,16,25,36,49,64,81,100]

    [i*i for i in range(11)]
    答案

    12、一行生成 9 * 9乘法表

    [ x                              for x in range(1,10)]
    
    [ x*y for y in range(1,x+1)]
    
    [ ([ x*y for y in range(1,x+1)]) for x in range(1,10)]
    
    [ ([ '{}*{} = {}'.format(x,y,x*y) for y in range(1,x+1)]) for x in range(1,10)]
    
    '
    '.join([ str(x) for x in range(1,10)])
    
    print('
    '.join([ ' '.join( [ '{}*{} = {}'.format(x,y,x*y) for y in range(1,x+1)] ) for x in range(1,10)]) )
    答案

    13、map(str,[1,2,3,4,5,6,7,8,9])输出什么?Python2 和Python3输出的结果一样吗?

    print(isinstance(map(str,[1,2,3,4,5,6,7,8,9]),Iterable))
    print(isinstance(map(str,[1,2,3,4,5,6,7,8,9]),Iterator))
    # python 3 <map object at 0x00D359F0> 是 Iterator
    # python 2 ['1', '2', '3', '4', '5', '6', '7', '8', '9'] ,是可迭代对象,但不是Iterator
    答案

    14、Django如何在Model保存前做一定的固定操作,比如写一条日志

    利用Django的Model的Signal Dispatcher, 通过django.db.models.signals.pre_save()方法,在事件发生前,发射触发信号,这一切都被调度中的receiver方法深藏功与名的保存了。
    信号的处理一般都写在Model中,举个例子:
    import logging
    from django.db import models
    from django.db.models.signals import pre_save
    from django.dispatch import receiver
     
    class Order(models.Model):
        # ...
     
    logger = logging.getLogger(__name__)
     
    @receiver(pre_save, sender=Order)
    def pre_save_handler(sender, **kwargs):
     
        # 我们可以在Order这个Model保存之前尽情调戏了:)
        logger.debug("{},{}".format(sender, **kwargs))
    答案

    参考:http://python.jobbole.com/81871/

    15、1,2,3,4,5能组成多少个互不相同的无重复的三位数

    5 * 4 * 3
    答案

    答案:

  • 相关阅读:
    (Toolbar)Android中如何消除Toolbar左边的空白
    (TextView)Android中为TextView赋初始值
    (Edittext)Android中界面中有多个Edittext,如何默认让第二个获取焦点
    (警告)Android中报Custom view `&#215;&#215;&#215;` has setOnTouchListener called on it but does not override performClick警告
    (Toolbar)Android中app:showASAction的值及含义
    个人课程总结
    (list)关于list清空问题的解决
    Ubuntu hive 安装过程中遇到的一些问题
    学习进度——第十七周
    个人课程总结
  • 原文地址:https://www.cnblogs.com/skiler/p/6906307.html
Copyright © 2020-2023  润新知