zoukankan      html  css  js  c++  java
  • python面试的100题(11)

    21.Python-遍历列表时删除元素的正确做法

    遍历在新在列表操作,删除时在原来的列表操作

    a = [1,2,3,4,5,6,7,8]
    print(id(a))
    print(id(a[:]))
    for i in a[:]:
        if i>5:
            pass
        else:
            a.remove(i)
        print(a)
    print('-----------')
    print(id(a))
    #filter
    a=[1,2,3,4,5,6,7,8]
    b = filter(lambda x: x>5,a)
    print(list(b))

    结果为:

    2828084574856
    2828084575880
    [2, 3, 4, 5, 6, 7, 8]
    [3, 4, 5, 6, 7, 8]
    [4, 5, 6, 7, 8]
    [5, 6, 7, 8]
    [6, 7, 8]
    [6, 7, 8]
    [6, 7, 8]
    [6, 7, 8]
    -----------
    2828084574856
    [6, 7, 8]

    列表解析

    a=[1,2,3,4,5,6,7,8]
    b = [i for i in a if i>5]
    print(b)

    结果为:

    [6, 7, 8]

    倒序删除 因为列表总是‘向前移’,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的

    a=[1,2,3,4,5,6,7,8]
    print(id(a))
    for i in range(len(a)-1,-1,-1):
        if a[i]>5:
            pass
        else:
            a.remove(a[i])
    print(id(a))
    print('-----------')
    print(a)

    结果为:

    2828084513160
    2828084513160
    -----------
    [6, 7, 8]

    22.字符串的操作题目

    全字母短句 PANGRAM 是包含所有英文字母的句子,比如:A QUICK BROWN FOX JUMPS OVER THE LAZY DOG. 定义并实现一个方法 get_missing_letter, 传入一个字符串采纳数,返回参数字符串变成一个 PANGRAM 中所缺失的字符。应该忽略传入字符串参数中的大小写,返回应该都是小写字符并按字母顺序排序(请忽略所有非 ACSII 字符)

    下面示例是用来解释,双引号不需要考虑:

    (0)输入: "A quick brown for jumps over the lazy dog"

    返回: ""

    (1)输入: "A slow yellow fox crawls under the proactive dog"

    返回: "bjkmqz"

    (2)输入: "Lions, and tigers, and bears, oh my!"

    返回: "cfjkpquvwxz"

    (3)输入: ""

    返回:"abcdefghijklmnopqrstuvwxyz"

    def get_missing_letter(a):
        s1 = set("abcdefghijklmnopqrstuvwxyz")
        s2 = set(a)
        ret = "".join(sorted(s1-s2))
        return ret
        
    print(get_missing_letter("python"))

    结果为:abcdefgijklmqrsuvwxz

    23.可变类型和不可变类型

    1,可变类型有list,dict.不可变类型有string,number,tuple.

    2,当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟新的内存。

    3,不可变类型被改变时,并没有改变原内存地址中的值,而是开辟一块新的内存,将原地址中的值复制过去,对这块新开辟的内存中的值进行操作。

    24.is和==有什么区别?

    is:比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象。是否指向同一个内存地址

    == : 比较的两个对象的内容/值是否相等,默认会调用对象的eq()方法

  • 相关阅读:
    centos7手动搭建redis集群
    Xshell突破四个窗口限制
    Redis官方集群规范
    Redis官方集群教程
    centos7 更新阿里YUM源
    gitlab配置ssh
    Java前端控制器模式~
    Java数据访问对象模式
    Java组合实体模式~
    Java业务代理模式~
  • 原文地址:https://www.cnblogs.com/Fiona-Y/p/10569923.html
Copyright © 2011-2022 走看看