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 输出分别是什么?

    1 or 2 结果 1

    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

11.range 和 xrange 区别

2.x:range 会生成一个列表,xrange会生成一个生成器

3.x:range 会生成一个生成器,取消了xrange。

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))

14 用一行代码生成[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,会将所有元素的类型变成字符串类型

17.Django如何在Model保存前做一定的固定操作,比如写一条日志

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

1.如何判断一个Python对象的类型?

    type()

2.Python如何生成一个随机数?

    random.range(0,n)

3.请写出匹配ip的正则表达式?

    import re a = 'ds1f192.168.0.12a0.0.0.0dlkl255.201.252.255,299.23.21.33'   

    a2 = re.findall('(?:(?:1d{2}.?) | (?:2[0-4]{1}d{1}.?) | (?:25[0-5]{1}.?) | (?:d{2}.?)){4}', a) 

    print(a2)

4.写尽可能多的str方法?

    str.encode('utf-8')  str.decode('utf-8')  str.split('|',n)  str.rsplit('|',n) 

   str.replise(old,new)   str.join(iter)    str.startswith('a')   str.endwith('s')  

5.全局变量和局部变量的区别,如何在function里面给全局变量赋值?

    作用域不同,全局变量所有地方都可以调用,局部变量只有在自己作用局中才可以使用。

    在局部作用域改变全局变量需要使用global

6.tuple和list区别,有2个list,b1=[1,2,3],b2=[2,3,4],写出合并代码。

    元组创建后不可以修改,列表可以修改,Python中列表和元组可以随意强制转换。

     最简单:b1.extend(b2)

     b1 = [1, 2, 3] 

     b2 = [2, 3, 4]  

     for i in b2:     

          b1.append(i) 

     print(b1)       

7.请写出一段Python代码实现删除一个list里面重复的元素,l=[1,1,2,3,4,4,5,6,6]

    l=[1,1,2,3,4,4,5,6,6]  

    l = list(set(l)) 

    print(l)

8.写出如下list的交集和差集代码,b1=[1,2,3],b2=[2,3,4]?

    交集:print(list(set(b1) & set(b2)))

    差集:print(list(set(b1) ^ set(b2)))

9.写一段Python代码实现list排序,a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]

10.D=[x * x for x in range(1,10)],请写出D的结果。

    [1, 4, 9, 16, 25, 36, 49, 64, 81]

11.如何用Python输出一个Fibonacci 数列,100以内

def fbn(k1,k2,n):
   if n == 100:
       return k1    else:
       k3 = k1 + k2
       ret = fbn(k2,k3,n+1)
       return ret

ret = fbn(0,1,1)

print(ret)#34

12.什么是lambda函数?下面代码输出是什么?

nums = range(2,20)

for i in nums:

        nums = filter(lambda x: x == i or x % i,nums)

print(list(nums))

匿名函数

结果:[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

 
原文地址:https://www.cnblogs.com/xuaijun/p/7263397.html