当前位置: 首页 > news >正文

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

 

 





转载于:https://www.cnblogs.com/guoyunlong666/p/9121184.html

相关文章:

  • ES6系列(二)变量的解构赋值
  • 超简单的视频对象提取程序
  • [Java并发编程实战] 共享对象之可见性
  • Java实用类库
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • 『TensorFlow』线程控制器类变量作用域
  • Git漏洞导致攻击者可在用户电脑上运行任意代码
  • [译] 不用祖传秘方 - 写好代码的几个小技巧
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • 安装Cassandra数据库和访问客户端配置
  • CSS中background-position使用技巧
  • java调用IPFS去中心化体系
  • Scrapy 1.5.0之基础入门
  • OSChina 周一乱弹 —— 你老婆和闺蜜总用奇怪的眼神看着你
  • Linux 进程后台运行的几种方式 screen
  • 分享一款快速APP功能测试工具
  • @angular/forms 源码解析之双向绑定
  • Android系统模拟器绘制实现概述
  • Go 语言编译器的 //go: 详解
  • gops —— Go 程序诊断分析工具
  • Mybatis初体验
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Python_OOP
  • 浮动相关
  • 聊聊flink的TableFactory
  • 想写好前端,先练好内功
  • 一道面试题引发的“血案”
  •  一套莫尔斯电报听写、翻译系统
  • 译米田引理
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 整理一些计算机基础知识!
  • #define
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (poj1.3.2)1791(构造法模拟)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转载)从 Java 代码到 Java 堆
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET CLR基本术语
  • .NET 反射 Reflect
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net程序帮助文档制作
  • .NET简谈设计模式之(单件模式)
  • .Net小白的大学四年,内含面经
  • @Mapper作用
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • @Valid和@NotNull字段校验使用
  • [1]-基于图搜索的路径规划基础
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]