1.列举Python2与Python3之间的区别
- python2的默认编码是ASCII,python3的默认编码是Unicode
- python2中range返回的是列表,xrange返回的是可迭代对象,而Python3中range返回的是可迭代对象
- python2中整数分为int 和 lang,python3中统一归为int
- python2不等于可以用!= 或者<>表示,在python3中只能用!=
- python2 使用print语句,python3中使用print()函数
- python2 输入用row_input() ,python3用input()
2.有整数3.14 如何去掉小数位? 请用一行代码实现不能使用切片
print(int(3.14))
print('%.0f' % 3.14)
3.字符串和列表如何互相转换?
s='123'
l = ['a', 'b', 'c']
s1 = ''.join(l)
print(s1) # abc #----->列表转字符串 “ ”.join()
print(list(s)) #------>字符串转列表 list(str)
4… 及 pass在Python中是否是占位 ?
是,为了程序的完成性,而又不能立即实现其功能或者不需要实现其功能,故采用pass或者…语句
5.a=10; b=20 用一行代码实现a,b数值交换:
a, b = b, a
6.读代码写结论为什么?
result = 1.2-1 #----->0.199999
while True:
if round(result,1) == 0.2: #round(0.19999,1) j结果为0.2
print( 'hi guys!')
else:
print( False)
无限循环打印hi guys! round()函数的作用是四舍五入,
7、读代码写结果 如下代码输出的结果是?
def Generator():
value = yield 1
yield value
gen = Generator()
print(gen.send(1))
答案是报错,因为当生成器第一次启动时,无法接收send传过来的值
8.列举你了解的5个模块并简述其作用
- time模块,时间相关的
- pickle模块,序列化相关
- re模块, 正则相关
- os模块,系统相关
- sys模块,Python解释器相关
- hashlib模块,加密相关
9.闭包函数有什么特点,应用场景?
10.解释一下什么是迭代器,你在代码中如何获得一个迭代器?
Python为了给类似集合这种不支持索引的数据类型,却能够像有索引一样方便取值,
就为一些对象内置__iter__方法来摆脱对对象对索引的依赖。即如果这个对象具有__iter__方法, 则成为可迭代对象。 可迭代对象执行__iter__方法返回的结果称为迭代器
from collections import Iterable, Iterator
s = 'abc'
s1 = s.__iter__()
print(s1)
print(isinstance(s1, Iterable))
print(isinstance(s1, Iterator))
11.迭代器如何取值?迭代器的好处?
迭代器的特点:
重复。 下一次的重复是基于上一次结果。
使用迭代器的优点:
1.提供一种不依赖于索引的取值方式。迭代器通过__next__方法取值
2.惰性计算,节省内存空间。迭代器每执行__next__方法一次,则“动作”一次,返回一个元素。就像懒驴似的,我们踹一脚,这懒驴(迭代器)才走一步,不踹不动弹。
那么迭代器的缺点也很明显:
1.取值不如索引方便。要每次执行__next__方法取值。
2.迭代过程不可逆。也就是说这个懒驴(迭代器的迭代过程)走的是一条通往悬崖的路,每次执行__next__方法返回结果的同时都会向悬崖靠近一步。直到跳下悬崖(迭代完毕,抛出StopIteration异常)。所以说,迭代过程是无法回头的,只能一条路走到黑。
3.无法获取迭代器的长度。因为可迭代对象通过__iter__方法返回的是迭代器(内存地址)。所以,我们无法获取这个迭代器内的元素有多少
12.写⼀个⽣成器,⾥⾯的元素是20以内所有奇数的平⽅减⼀
a=(i**2-1 for i in range(21) if i%2==1 )
print(list(a))
13.请构建⼀个⽣成器,⾥⾯的元素是1,4,9,16,25,36,49。
a=(i**2 for i in range(1,8))
print(list(a))
14.写函数(lambda)实现字符串翻转,如:V = ‘oldboy’ (请⽤最简的⽅式)
V ='oldboy'
print(set(map(lambda x:V[::-1],V)))
15.现有列表alist = [3,1,-4,-2],按照元素的绝对值⼤⼩进⾏排序并将得到列表的每个元素求平⽅形成⼀个新的列表
alist = [3,1,-4,-2]
print(list(map(lambda x:x**2,sorted(alist,key= lambda x:abs(x)))))
16.alist = [{“a”:5,”b”:2},{“a”:2,”b”:8},{“a”:8,”b”:2}]请写出以键a的值对alist进⾏排序的表达式
alist = [{'a': 5, 'b': 2}, {'a': 2, 'b': 8}, {'a': 8, 'b': 2}]
print(sorted(alist,key=lambda x:int(x['a'])))
17.有⼀个列表l1 = [‘alex’, ‘WuSir’, ‘⽼男孩’, ‘太⽩’]⽤列表推导式将其构造成这种列表
['alex0', 'WuSir1', '⽼男孩2', '太⽩3']
l1 = ['alex', 'WuSir', '老男孩', '太白']
print(list(map(lambda x:x+str(l1.index(x)),l1)))
18.现在有两元祖((‘a’),(‘b’)),((‘c’),(‘d’)),请使⽤python中的匿名函数和内置函数⽣成列表
t1=(('a'),('b'))
t2=(('c'),('d'))
print(list({k:v} for k,v in zip(t1,t2)))