315道面试题【33-45】

33、filter、map、reduce的作用?

map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表

In [11]: for i in map(lambda x:x*x,[1,2,3,4]):
    ...:     print(i)
    ...:
1
4
9
16

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

In [12]: def is_odd(n):
    ...:     return n % 2 == 1

In [15]: for i in filter(is_odd,[1,2,3]):
    ...:     print(i)
    ...:
1
3

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

在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数


In [19]: from functools import reduce

In [20]: def add(x,y):
    ...:     return x+y
    ...: reduce(add,range(1,101))
    ...:
Out[20]: 5050

34、一行代码实现9*9乘法表

print ('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))

35、如何安装第三方模块?以及用过哪些第三方模块?

在Python中,安装第三方模块,是通过setuptools这个工具完成的。Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip
如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了。
如果你正在使用Windows,确保安装时勾选了pip和Add python.exe to Path。
在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip。
现在,让我们来安装一个第三方库——bs4
pip install bs4
用过的第三方模块 bs4/pymysql/redis/lxml/tkinter/urllib/requests等

36、至少列举8个常用模块都有那些?

Django Flask Scrapy Tkinter Pygame numpy pillow-python pymysql pip

37、re的match和search区别?

match只找字符串的开始位置,而search是全盘查找

38、什么是正则的贪婪匹配?

1、贪婪匹配
总是尝试匹配尽可能多的字符
2、非贪婪匹配
是尝试匹配尽可能少的字符

39、求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )

In [32]: a = [i % 2 for i in range(10)]
In [33]: a
Out[33]: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
In [34]: b = (i%2 for i in range(10))

In [35]: b
Out[35]: <generator object <genexpr> at 0x000000000552E938>

详情请看https://blog.csdn.net/qq_37275405/article/details/80945446

40、求结果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2

In [48]: 0 or False
Out[48]: False

In [49]: 1 or 2
Out[49]: 1

In [50]: 1 and 2
Out[50]: 2

In [51]: 1 < (2==2)
Out[51]: False

In [52]: 1<2==2
Out[52]: True

41、def func(a,b=[]) 这种写法有什么坑?

In [55]: def func(a,b=[]):
    ...:     b.append(a)
    ...:     print(b)
    ...: func(1)
    ...: func(1)
    ...: func(1)
    ...: func(1)
    ...:
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]

函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第二次执行还是用第一次执行的时候实例化的地址存储,所以三次执行的结果就是 [1, 1, 1] ,想每次执行只输出[1] ,默认参数应该设置为None。

42、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?

In [56]: a = '1,2,3'

In [57]: list(a)
Out[57]: ['1', ',', '2', ',', '3']

43、如何实现[‘1’,’2’,’3’]变成[1,2,3] ?

In [65]: a = ['1','2','3']

In [66]: [ int(i) for i in a]
Out[66]: [1, 2, 3]

44、比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?

a = [1,2,3] 和 b = [(1),(2),(3) ] 都是列表 b = [(1,),(2,),(3,) ] 是列表里面套元组

45、如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?

In [74]: [ i*i for i in range(1,11)]
Out[74]: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

猜你喜欢

转载自blog.csdn.net/qq_37275405/article/details/80979437