zoukankan      html  css  js  c++  java
  • python面试,日更

    l1 = [11, 2, 3, 22, 2, 4, 11, 3]
    去重并保持原来顺序
    # 集合方法
    l2 = list(set(l1))
    l2.sort(key=l1.index) # 按照l1索引排序
    print(l2)
    
    # 列表
    l3 = []
    for item in l1:
        if item not in l3:
            l3.append(item)
    print(l3)
    答案
    l4 = [
        {"name":"lmj11","age":11},
        {"name":"lmj44","age":44},
        {"name":"lmj33","age":33},
        {"name":"lmj77","age":77},
        {"name":"lmj66","age":66},
        {"name":"lmj55","age":55},
    ]
    # 使用lambda表达式
    l4.sort(key= lambda x:x["age"]) # 方式一
    l4=sorted(l4,key=lambda x:x["age"]) # 方式二
    print(l4)
    
    # 其他方式
    # def tmp(x):
    #     return x["age"]
    # l4.sort(key=tmp)
    # print(l4)
    答案
    def extend_list(v, li=[]):
        li.append(v)
        return li
    
    list1 = extend_list(10)
    list2 = extend_list(123, [])
    list3 = extend_list('a')
    
    print(list1)
    print(list2)
    print(list3)
    
    print(list1 is list3)

    答案:

    [10,'a']
    [123,]
    [10,'a']
    答案
    问以下代码的输出结果是什么?
    list1 = ["a", "b", "c", "d", "e"]
    print(list1[10:])

    答案:

    # 列表的切片操作
    print(list1[3:]) # ['d', 'e']
    print(list1[-3:]) # ['c', 'd', 'e']
    print(list1[:-3]) # ['a', 'b']
    print(list1[:3]) # ['a', 'b', 'c']
    答案
    list1=["a","b","c","d","e"]
    
    # 实现打乱列表顺序
    # 分别在原有列表和新建列表基础上
    
    #请分别阐述潜复制,深复制和切片复制列表的特点
    import random
    
    random.shuffle(list1)
    print(list1) # ['c', 'a', 'b', 'd', 'e']
    
    # 以下给出该函数的官方解释,即打乱原本表格,返回None
    help(random.shuffle)
    """
    shuffle(x, random=None) method of random.Random instance
        Shuffle list x in place, and return None.
        
        Optional argument random is a 0-argument function returning a
        random float in [0.0, 1.0); if it is the default None, the
        standard random.random will be used.
    """

    • 直接赋值:其实就是对象的引用(别名)。

    • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。(字典或多层列表可明显看出区别)

    • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,开辟了一块新的内存空间,完全拷贝了父对象及其子对象。

    list1=["a","b","c","d","e"]
    
    # 列表潜拷贝
    list2=list1.copy()
    print(list1) # ['a', 'b', 'c', 'd', 'e', 'fff']
    print(list2) # ['a', 'b', 'c', 'd', 'e']
    list1.append("fff")
    print(list1) # ['a', 'b', 'c', 'd', 'e', 'fff']
    print(list2) # ['a', 'b', 'c', 'd', 'e']
    
    print('分割线'.center(50,'=')) # 列表深拷贝 import copy list3 = copy.deepcopy(list1) print(list1) # ['a', 'b', 'c', 'd', 'e', 'fff'] print(list3) # ['a', 'b', 'c', 'd', 'e', 'fff'] list1.append("ggg") print(list1) # ['a', 'b', 'c', 'd', 'e', 'fff', 'ggg'] print(list3) # ['a', 'b', 'c', 'd', 'e', 'fff']
    # 列表换成多层时的潜拷贝
    list2=list1.copy()
    print(list1) # ['a', 'b', 'c', 'd', 'e', 'fff']
    print(list2) # ['a', 'b', 'c', 'd', 'e']
    list1[3].append("fff")
    print(list1) # ['a', 'b', 'c', ['d', 'e', 'fff']]
    print(list2) # ['a', 'b', 'c', ['d', 'e', 'fff']]
    综上所述,可理解对象A浅拷贝B,就是A对B的一种内存地址的引用,无论B引用的值如何改变,A均可以取得最新值
     """
    问:执行完下面的代码后,  l,m的内容分别是什么?
    """


    def func(m):
        for k,v in m.items():
            m[k+2] = v+2


    m = {1: 2, 3: 4}
    l = m  # 浅拷贝
    l[9] = 10
    func(l)
    m[7] = 8


    print("l:", l)
    print("m:", m) 
    # python3.6 中会报错
    # 在迭代一个列表或字典的时候,不能修改列表或字典的大小!
    答案
    # 将list1 拼接成字符串
    list1 = [11,22,33]
    new_list = "".join([str(i) for i in list1])
    print(new_list)
    答案
    Python中字符串的格式化(%s,format),一般用哪种?为什么?
    编写Python脚本,分析xx.log文件,按域名统计访问次数
    
    xx.log文件内容如下:
    https://www.sogo.com/ale.html
    https://www.qq.com/3asd.html
    https://www.sogo.com/teoans.html
    https://www.bilibili.com/2
    https://www.sogo.com/asd_sa.html
    https://y.qq.com/
    https://www.bilibili.com/1
    https://dig.chouti.com/
    https://www.bilibili.com/imd.html
    https://www.bilibili.com/
    
    
    输出:
    4 www.bilibili.com
    3 www.sogo.com
    1 www.qq.com
    1 y.qq.com
    1 dig.chouti.com
    import re
    from collections import Counter
    
    # 1. 读取出内容
    with open('yuming.log','r',encoding='utf-8')as f:
        data = f.read()
    
    # 2. 取域名信息
    res = re.findall(r'https://(.*?)/.*?',data)
    # print(res)
    
    # 3. 统计
    dic = {}
    for i in res:
        if i not in dic:
            dic[i] = 1
        else:
            dic[i] += 1
    
    # 4. 排序(二种方法)
    # print(dic) # {'www.sogo.com': 3, 'www.qq.com': 1, 'www.bilibili.com': 4, 'y.qq.com': 1, 'dig.chouti.com': 1}
    # dic = Counter(res)
    # print(dic) # Counter({'www.bilibili.com': 4, 'www.sogo.com': 3, 'www.qq.com': 1, 'y.qq.com': 1, 'dig.chouti.com': 1})
    # for k in dic.items():
    #     print(k)
    '''
    ('www.sogo.com', 3)
    ('www.qq.com', 1)
    ('www.bilibili.com', 4)
    ('y.qq.com', 1)
    ('dig.chouti.com', 1)
    '''
    
    # 方法一
    # res2 = sorted(dic,key=lambda x:dic[x],reverse=True)
    # print(res2) # ['www.bilibili.com', 'www.sogo.com', 'www.qq.com', 'y.qq.com', 'dig.chouti.com']
    # for k in res2:
    #     print(dic[k],k)
    
    '''
    4 www.bilibili.com
    3 www.sogo.com
    1 www.qq.com
    1 y.qq.com
    1 dig.chouti.com
    
    '''
    
    # 方法二
    # print(dic.items()) # dict_items([('www.sogo.com', 3), ('www.qq.com', 1), ('www.bilibili.com', 4), ('y.qq.com', 1), ('dig.chouti.com', 1)])
    res2 = sorted(dic.items(), key=lambda x:x[1], reverse=True)
    # print(res2) # [('www.bilibili.com', 4), ('www.sogo.com', 3), ('www.qq.com', 1), ('y.qq.com', 1), ('dig.chouti.com', 1)]
    for k,v in res2:
        print(v,k)
    '''
    4 www.bilibili.com
    3 www.sogo.com
    1 www.qq.com
    1 y.qq.com
    1 dig.chouti.com
    
    '''
    答案

    待续。。。

  • 相关阅读:
    LeetCode OJ String to Integer (atoi) 字符串转数字
    HDU 1005 Number Sequence(AC代码)
    HDU 1004 Let the Balloon Rise(AC代码)
    HDU 1003 Max Sum(AC代码)
    012 Integer to Roman 整数转换成罗马数字
    011 Container With Most Water 盛最多水的容器
    010 Regular Expression Matching 正则表达式匹配
    007 Reverse Integer 旋转整数
    006 ZigZag Conversion
    005 Longest Palindromic Substring 最长回文子串
  • 原文地址:https://www.cnblogs.com/limengjie0104/p/9098629.html
Copyright © 2011-2022 走看看