AI笔试面试题库-Python题目解析2

star2017 1年前 ⋅ 3292 阅读
1、什么是lambda函数?它有什么好处?

解析:

lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数lambda函数:首要用途是指点短小的回调函数

lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)


2、Python里面如何实现tuple和list的转换?

解析:

直接使用tuple和list函数就行了,type()可以判断对象的类型


3、请写出一段Python代码实现删除一个list里面的重复元素

解析:

1,使用set函数,set(list)
2,使用字典函数,
>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
>>> b={}
>>>b=b.fromkeys(a)
>>>c=list(b.keys())
>>> c


4、Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

解析:

赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3copy模块的copy()函数}

深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的deep.deepcopy()函数}


5、输入一个字符串返回满足以下条件的字符串找出与字符串的第一个字母相同的字母,把它们替换成 '*',除了第一个字母本身以外例如: 输入'babble', 返回 'ba**le'

解析:

s=input('input:')

for i in range(1,len(s)):
    print(i)
    if s[0]==s[i]:
        s=s[:i]+'*'+s[i+1:]
print(s)


6、- 输入一个字符串 返回满足以下条件的字符串
   - 由字符串的最前面两个字母和最后两个字母组成的字符串。
   - 例如: 'spring' 返回 'spng''is' 返回 'is’
   - 当输入的字符串长度小于2时,返回空字符串

解析:

s=input('input:')
l=len(s)
if l<2:
    print('')
else :
    if l>3:
        s=s[:2]+s[-2:]
    print(s)


7、- 输入一个字符串,把字符串拆分成两个等分
   - 如果字符串长度是偶数,前一半和后一半的长度是相同的
   - 如果字符串长度是奇数,则多出的一个字符加到前一半,
如:'abcde',前一半是'abc',后一半是'de'

解析:

s=input('input:')
l=len(s)
m=l//2
if l%2>0:m+=1
print(s[:m],s[m:])


8、- 判断是否为回文
   - 提示:回文:62426是回文数字

解析:

s=input('pls input a string of 
numbes:')
s_=s[::-1]
answer='isn\'t'
if s_==s:
    answer='is'
print(s,answer,'Palindrome number')


9、- 求两个数字之间的素数
   - 素数:只能被1及自己整除的数,如3,7,13,23等

解析:

for i in range(6,33+1):
    for j in range(2,i+1):
        if i%j==0 and j


10、Python是如何进行内存管理的?

解析:

从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制

(一)对象的引用计数机制Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。

引用计数增加的情况:
(1)一个对象分配一个新名称
(2)将其放入一个容器中(如列表、元组或字典)

引用计数减少的情况:
(1)使用del语句对对象别名显示的销毁
(2)引用超出作用域或被重新赋值sys.getrefcount( )函数可以获得对象的当前引用计数多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。

(二)垃圾回收
(1)当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
(2)当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

(三)内存池机制
Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系
统。
1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。
2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统malloc。
3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。


更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: