zoukankan      html  css  js  c++  java
  • Python常见问题系列

    Python基础题
    1、冒泡排序
    复制代码
    def mao_pao(li):
        for i in range(len(li)):
            for j in range(len(li)):
                if li[i] < li[j]:
                    li[i],li[j] = li[j] ,li[i]
    import random
    li = list(range(10))
    random.shuffle(li)
    print(li)
    mao_pao(li)
    print(li) 
    复制代码
    2、删除列表中的重复元素
    复制代码
    方式一
    li = [1,5,5,4,12,3,1,5]
    print(list(set(l)))
    
    方式二
    li = [1,5,5,4,12,3,1,5]
    def func(li):
        l = []
        for i in li:
            if i not in l:
                l.append(i)
        return l
    print(func(li)) 
    复制代码
    3、二分查找
    复制代码
    方式一:递归版
    li = [1,2,3,4,5,6,7,8,9,10]
    def erfen(li,aim ,start=0 ,end=len(li)-1):
        if start <= end:
            mid = (start+end)//2
            if li[mid] >aim :  #如果中间的值比目标值大,就从左边找
                return erfen(li,aim,start,mid-1)
            elif li[mid]<aim : #从右边找
                return erfen(li,aim,mid+1,end)
            else:
                return mid
    ret = erfen(li,10)
    print(ret)
    
    方式二:循环版
    li = [1,2,3,4,5,6,7,8,9,10]
    def erfen(li,aim,start=0,end=len(li)-1):
        while start <= end:
            mid = (start+end) //2
            if li[mid] < aim:
                start = li[mid] +1
            elif li[mid] >aim:
                end = li[mid] -1
            else:
                return mid
    
    print(erfen(li,10)) 
    复制代码
    4、写出下面代码的输出结果
    复制代码
    def f(x,l=[]):
        for i in range(x):
            l.append(i*i)
        print(l)
    f(2)  #[0,1]
    f(3,[3,2,1]) #[3,2,1,0 1 4]
    f(3) #[0,1,0,1,4]
    复制代码

    5、实现字符串反转 输入str="string"输出'gnirts'
    复制代码
    # 方式一
    def str_reverse(str):
        return str[::-1]  #从前到后步长为-1
    print(str_reverse('string'))
    
    # 方式二
    def str_reverse2(str):
        l = list(str)
        l.reverse()
        new_str = ''.join(l)
        return new_str
    print(str_reverse2('string')) 
    复制代码
    6、一行代码实现对列表a中的偶数位置的元素进行加3后求和
    # 0 1 2 3 4
    # 0   5   7
    sums=sum(map(lambda x:x+3,list(range(5))[::2]))
    print(sums) 
    7、List=[-2,1,3,-6] ,如何实现以绝对值大小从小到大将list中内容排序
    List=[-2,1,3,-6]
    List.sort(key=abs)  #按照绝对值从小到大排序
    print(List) 
    8、如果当前日期为20170130,要求写一个函数输出N天后的日期
    复制代码
    import datetime
    data = '20170130'
    def func(n,data):
    
        date=datetime.datetime.strptime(data,'%Y%m%d')
        da=datetime.timedelta(n)
        return date+da
    
    print(func(2,data)) 
    复制代码
    9、实现一段代码,功能是将这段代码打印出来
    import os
    def print_code():
        with open(os.path.join(os.getcwd(),__file__),'r',encoding='utf-8') as f:
            return f.read()
    print(print_code()) 
    10、合并两个列表,并去重,组成一个新的列表
    复制代码
    # 方式一
    list1 = [1,2,3,5,8,4,2,6]
    list2 = [11,44,21,2,54,77]
    print(list(set(list1+list2)))
    
    #方式二
    list1.extend(list2)
    print(list(set(list1)))
    #方式三
    def list_union(list1,list2):
        for i in list2:
            list1.append(i)
        return list1
    print(list(set(list_union(list1,list2)))) 
    复制代码
    11、什么是lambda表达式?他有什么好处?另外Python在函数编程方面提供了些什么函数和语法?
    答:lambda 表达式也就是匿名函数,一些简单的功能需要实现的时候可以用匿名函数,一行语句体搞定。
        它语法简单,简化代码,不会产生命名冲突,污染命名空间。
        Python提供了map,filter,reduce等函数方法,提供了装饰器,闭包等语法 
    12、详细说说tuple,list,dict的用法以及他们的特点
    tuple:元组,不可变数据类型,访问效率高,适合存储一些常量数据,可以作为字典的键使用
    list:列表,是可变数据类型,可以通过下标索引取值
    dict:字典,是可变数据类型,存储方式为键值对的形式,可以通过相对应的键获取相对应的值。key支持多种数据类型

    13、list 对象 alist [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}],按 alist 中元素的age 由大到小排序
    alist = [{'name': 'a', 'age': 20}, {'name': 'b', 'age': 30}, {'name': 'c', 'age': 25}]
    alist.sort(key=lambda x:x['age'],reverse=True)
    print(alist) 
    14、将字符串:"k:1|k1:2|k2:3|k3:4",处理成 python 字典:{'k':'1', 'k1':'2', 'k2':'3','k3':'4' }
    复制代码
    s = "k:1|k1:2|k2:3|k3:4"
    str_list = s.split('|')
    print(str_list)
    d = {}
    for i in str_list:
        key ,value = i.split(':')
        d[key] = value
    print(d) 
    复制代码
    15、斐波那契数列
    def fib(n):
        if n<=2:
            return 1
        else:
            return fib(n-1) + fib(n-2)
    print(fib(10))
    
    
    
     





  • 相关阅读:
    我的安卓开始
    OLAP的一些知识——接下去的项目需要的背景
    关于Java接口
    Hexo+Github/Coding免费搭建个人博客网站
    手机自带输入法emoji表情的输入,提交及显示——前端解决方案
    改变函数中的 this 指向——神奇的call,apply和bind及其应用
    什么是jsonp?——使用jsonp解决跨域请求问题
    玩转angularJs——通过自定义ng-model,不仅仅只是input可以实现双向数据绑定
    利用jquery mobiscroll插件选择日期、select、treeList的具体运用
    转载:中年程序猿的迷茫,你还在深究技术吗?
  • 原文地址:https://www.cnblogs.com/guoyunlong666/p/9121184.html
Copyright © 2011-2022 走看看