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)
本文所有名词及函数解释均来自 "菜鸟教程".
python 面试的 100 题(12)
来源: http://www.bubuko.com/infodetail-2994581.html