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

    25.求出列表所有奇数并构造新列表

    a=[1,2,3,4,5,6,7,8,9,10]
    res=[i for i in a if i%2==1]
    print(res)

    结果为:[1, 3, 5, 7, 9]

    26.用一行python代码写出1+2+3+10248

    sum=sum([1,2,3,10248])
    print(sum)

    结果为:10254

    方法2

    from functools import reduce
    num1 = reduce(lambda x,y :x+y,[1,2,3,10248])
    print(num1)

    reduce函数

    描述

    reduce() 函数会对参数序列中元素进行累积。

    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

    语法

    reduce() 函数语法:

    reduce(function, iterable[, initializer])

    参数

    • function -- 函数,有两个参数

    • iterable -- 可迭代对象

    • initializer -- 可选,初始参数

    返回值

    返回函数计算结果。

    实例

    以下实例展示了 reduce() 的使用方法:

    def add(x, y) :            # 两数相加
    return x + y
    
    t1=reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
    print(t1)
    t2=reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
    print(t2)

     结果为15,15

    参考地址:http://www.runoob.com/python/python-func-reduce.html

    27.Python中变量的作用域?(变量查找顺序)

    函数作用域的LEGB顺序

    1.什么是LEGB?

    L: local 函数内部作用域

    E: enclosing 函数内部与内嵌函数之间

    G: global 全局作用域

    B: build-in 内置作用

    python在函数里面的查找分为4种,称之为LEGB,也正是按照这是顺序来查找的

    28.字符串 "123" 转换成 123,不使用内置api,例如 int()

    方法一: 利用 str 函数

    def atoi(s):
        num = 0
        for v in s:
            for j in range(10):
                if v == str(j):
                    num = num * 10 + j
        return num

    atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,

    str() 函数

    描述

    str() 函数将对象转化为适于人阅读的形式。

    语法

    以下是 str() 方法的语法:

    class str(object='')

    参数

    • object -- 对象。

    返回值

    返回一个对象的string格式。


    实例

    以下展示了使用 str() 方法的实例:

    s = 'RUNOOB'
    str(s)
    输出结果:'RUNOOB'
    dict = {'runoob': 'runoob.com', 'google': 'google.com'};
    str(dict)
    输出结果:"{'google': 'google.com', 'runoob': 'runoob.com'}"

    方法二: 利用 ord 函数

    def atoi(s):
        num = 0
        for v in s:
            num = num * 10 + ord(v) - ord('0')
        return num

    ord函数

    描述

    ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

    语法

    以下是 ord() 方法的语法:

    ord(c)

    参数

    • c -- 字符。

    返回值

    返回值是对应的十进制整数。


    实例

    以下展示了使用 ord() 方法的实例:

    ord('a')
    结果为:97
    ord('b')
    结果为:98
    ord('c')
    结果为:99

    方法三: 利用 eval 函数

    def atoi(s):
        num = 0
        for v in s:
            t = "%s * 1" % v
            n = eval(t)
            num = num * 10 + n
        return num

    eval() 函数

    描述

    eval() 函数用来执行一个字符串表达式,并返回表达式的值。

    语法

    以下是 eval() 方法的语法:

    eval(expression[, globals[, locals]])

    参数

    • expression -- 表达式。

    • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

    • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

    返回值

    返回表达式计算结果。


    实例

    以下展示了使用 eval() 方法的实例:

    x = 7
    eval( '3 * x' )
    结果为:21
    eval('pow(2,2)')
    结果为:4
    eval('2 + 2')
    结果为:4
    n=81
    eval("n + 4")
    结果为:85

    方法四: 结合方法二,使用 reduce,一行解决

    from functools import reduce
    def atoi(s):
        return reduce(lambda num, v: num * 10 + ord(v) - ord('0'), s, 0)

    本文所有名词及函数解释均来自“菜鸟教程”。

  • 相关阅读:
    在centOS上安装oracle出现java.lang.NoClassDefFoundError问题及解决方法
    centos6.5下安装oracle11g
    配置单点登录
    CentOS 环境变量编辑、保存、立即生效的方法
    python如何调用C语言程序
    python生成exe可执行程序
    python的encode()和decode()函数
    python 获取时间
    python修改字符串的值
    python enumerate()函数
  • 原文地址:https://www.cnblogs.com/Fiona-Y/p/10570205.html
Copyright © 2011-2022 走看看