python3-开发面试题(python)6.24基础篇(3)
1、用一行代码实现数值交换:
a = 1
b = 2
a,b=b,a
2、Python3和Python2中 int 和 long的区别?
long整数类型被Python3废弃,统一使用int
3、xrange和range的区别?
xrange函数被Python3废弃,统一使用range,Python3中range的机制也进行修改并提高了大数据集生成效率
range和xrange都是在循环中使用,输出结果一样
range 返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)
xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好
4、文件操作时:xreadlines和readlines的区别?
二者使用时相同,但返回类型不同,xreadlines返回的是一个生成器,readlines返回的是list
5、列举布尔值为False的常见值?
None,0,空(空字符串,空列表,空字典等)
6、字符串、列表、元组、字典每个常用的5个方法?
#字符串操作 words = 'today manyqian is handsome' print(words.strip('today'))#如果strip方法指定一个值的话,那么会去掉这两个值 print(words.count('a'))#统计字符串出现的次数 print(words.index('is'))#找下标 print(words.index('z'))#找下标如果元素不找不到的话,会报错 print(words.find('a'))#找下标,如果元素找不到的话,返回-1 print(words.replace('day','DAY'))#字符串替换 print(words.isdigit())#判断字符串是否为纯数字 print(words.islower())#判断字符串是否为小写字母 print(words.isupper())#判断字符串是否为大写字母 print(words.startswith('http'))#判断是否以某个字符串开头 print(words.endswith('.jpg'))#判断是否以某个字符串结尾 print(words.upper())#将字符串变成大写 print(words.lower())#将字符串变成小写
#列表操作 l=[1,2,3,4,5,6] 1、按照索引存取值(正向存取+反向存取):即可存也可以取 l[0]=1 l[-1]=6 2、切片 l[0:2] #[1,2] 顾头不顾尾 l[0:4:2] #[2,4] 是步长 3、长度 len(l) 4、成员运算in和not in 1 in l #Ture 0 not in l #False 5、追加 l.append(7) #末尾追加 6、删除 del l[0] #查看数据已经删除所选数据 7、循环 for i in range(6): print(l[i]) for i in l: print(i)
#元组的常用操作,和列表相似 ,元组不可变,值是无法改变 l=(1,2,3,4,5,6) 1、按索引取值(正向取+反向取):只能取 l[0] #1 2、切片(顾头不顾尾,步长) l[0:2] #(1,2) 3、长度 len(l) #6 4、成员运算in和not in 1 in l # Ture 1 not in l #False 5、循环 for i in l: print(i)
# 字典 D ={'a':'1','b':'2','c':'3'} 每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。 键是唯一的,字典只认最后一个赋的键值。 dictionary的方法 D.get(key, 0) #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常 D.has_key(key) #有该键返回TRUE,否则FALSE D.keys() #返回字典键的列表 D.values() D.items() D.update(dict2) #增加合并字典 D.popitem() #得到一个pair,并从字典中删除它。已空则抛异常 D.clear() #清空字典,同del dict D.copy() #拷贝字典 D.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小) #第一个大返回1,小返回-1,一样返回0 dictionary的复制 dict1 = dict #别名 dict2=dict.copy() #克隆,即另一个拷贝。
7、lambda表达式格式以及应用场景?
1、应用在函数式编程中
# 需求:将列表中的元素按照绝对值大小进行升序排列 list1 = [3,5,-4,-1,0,-2,-6] print(sorted(list1, key=lambda x: abs(x))) #[0, -1, -2, 3, -4, 5, -6]
当然,也可以如下:
list1 = [3,5,-4,-1,0,-2,-6] def get_abs(x): return abs(x) print(sorted(list1,key=get_abs)) # [0, -1, -2, 3, -4, 5, -6]
2、应用在闭包中
def get_y(a,b): return lambda x:a*x+b y1 = get_y(1,1) print(y1(1)) # 结果为2 #常规函数实现闭包 def get_y(a,b): def func(x): return a*x+b return func y1 = get_y(1,1) print(y1(1)) # 结果为2
Python之禅 Explicit is better than implicit(明了胜与晦涩),不能盲目用匿名函数
8、pass的作用?
1、空语句
2、保证格式完整
3、保证语语义完整
9、*args和**kwargs作用
*args:可以理解为只有一列的表格,长度不固定
**kwargs:可以理解为字典,长度也不固定
1、函数调用里的*args和**kwargs:
(1)*args:元组或列表‘出现’
(2)分割参数
2、函数定义时传的*args/**kwargs
(1)接收参数
10、is和==的区别
is同一性运算符 比较判断的是对象间的唯一身份标识,id是否相同
==比较操作符 比较判断两个对象的value(值)是否相等