【Python基础】Python基础练习题
Python基础练习题
1.现在有2个元组(('a'),('b'),('c'),('d')),请使用Python中的匿名函数生成列表[{'a':'c'},{'b':'d'}]?
tu = (('a'),('b'),('c'),('d')) tu = list(map(lambda x,y:{x:y},tu[:2],tu[2:])) print(tu)
2.看代码写出输出结果:
def multipliters(): return [lambda x:i * x for i in range(4)] print([m(2) for m in multipliters()])
答案:
答案:[6,6,6,6]
3. 1 or 2 和 1 and 2 输出分别是什么?
or 2 结果 1 and 2 结果 2 and 如果真返回后面的 or 如果真返回第一个
4.看代码输出结果?
value = 'B' and 'A' or 'C' print(value)
答案:A
5.看代码,写输出结果
v1 = [i%2 for i in range(10)] v2 = (i%2 for i in range(10)) print(v1,v2)
v1 = [0,1,0,1,0,1,0,1,0,1] v2 = <genexpr>对象,是一个生成器
6.def f(a,b=[]) 这种写法有什么陷阱?
默认参数可变,容易在后面引用的时候,读取到之前使用的值,因为列表的内存地址没有变。
7.看代码写结果
def extendlist(val,li=[]): li.append(val) return li l1 = extendlist(10) l2 = extendlist(123,[]) l3 = extendlist('a') print(l1) print(l2) print(l3)
答案:[10,'a'] [123] [10,'a']
8.谁会报错?
v1 = {} v2 = {3:5} v3 = {[1,2,3]:5} v4 = {(1,2,3):5}
v3会报错,字典不能使用可变的数据当key。
9.输出结果?
for i in range(5,0,1): print(i)
什么也没有输出,因为步长为正,倒序需要为负数
10.使用lambda匿名函数完成以下操作
def add(x,y): return x+y
add = lambda x,y:x+y
12. "1,2,3" 如何变成['1','2','3'] li = "1,2,3".split(',') 13.['1','2','3']如何变成[1,2,3] li = ['1','2','3'] li = list(map(lambda x:int(x),li)) 用一行代码生成[1,4,9,16,25,36,49,64,81,100] li = list(map(lambda x: x*x,[x for x in range(11)])) 15.一行生成9*9的乘法表 print('\n'.join([''.join(['%sX%s=%s '%(y,x,x*y) for y in range(1,(x+1))]) for x in range(1,10)])) 16.map(str,[1,2,3,4,5,6,7,8,9]) 输出什么? map对象。 如果list,会将所有元素的类型变成字符串类型 18. 1,2,3,4,5 能注册多少个互不相同的无重复的三位数? def count_nub(bit,data_list): ''' 返回一个列表生成bit位组成数的不重复的个数 :param bit: 数字几位 :param data_list: 数据列表 :return: ''' max_n = len(data_list) + 1 min_n = max_n - bit ret = 1 for i in range(min_n, max_n): ret *= i return ret print(count_nub(3,[1,2,3,4,5])) 结果为:60