【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('
'.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

  

  

  

原文地址:https://www.cnblogs.com/XJT2018/p/10860733.html