常见例题

‘‘‘
第一题:去除列表中的重复元素
1.列表中的元素有重复,需要去掉重复元素
2.要求保留原来的元素顺序
3.不需要返回值,直接修改原列表即可
‘‘‘

lt = [3,2,1,8,4,3,4,5,5,6,6,7]
def duplicate_removal(lt):
lt1 = []
for i in lt:
if i not in lt1:
lt1.append(i)
return lt1
print(duplicate_removal(lt))

‘‘‘
第二题:计算字符串中所有数字的和
1.字符串中只有小写字母和数字
2.数字可能连续,也可能不连续
3.连续数字要当做一个数处理
如:‘12abc34de5f‘ => 12 + 34 + 5 => 51
‘‘‘

s = ‘12abc34de5f‘
def sum_of_num(s):
ret = 0
num = 0
for i in s:
if i.isdecimal():
a = int(i)
ret = ret * 10 + a
else:
num += ret
ret = 0
num += ret
return num
print(sum_of_num(s))

‘‘‘
第三题:返回列表中的第二小的元素的下标
1.参数是一个列表,元素全部是整数
2.返回第二小的元素的下标
‘‘‘

lt = [5,6,7,3,1,4,9]
def seconde_min(lt):
a =sorted(lt)
b = a[1]
c = lt.index(b)
return c
print(seconde_min(lt))

‘‘‘
第四题:写出冒泡排序函数,可以排序任意类型的元素,可以逆序
1.实现冒泡排序算法
2.可以排序任意类型的元素
3.能够通过参数设置进行逆序,默认升序
‘‘‘

def list_sort(lt, key=None, reverse=False):
for i in range(len(lt)-1):
for j in range(len(lt)-i-1):
if key:
if reverse:
if key(lt[j]) < key(lt[j+1]):
lt[j] , lt[j+1] = lt[j+1] , lt[j]
else:
if key(lt[j]) > key(lt[j + 1]):
lt[j], lt[j + 1] = lt[j + 1], lt[j]
else:
if reverse:
if lt[j] < lt[j + 1]:
lt[j], lt[j + 1] = lt[j + 1], lt[j]
else:
if lt[j] > lt[j + 1]:
lt[j], lt[j + 1] = lt[j + 1], lt[j]
return lt
lt = [
{‘name‘: ‘xiaoming‘, ‘age‘: 18},
{‘name‘: ‘xiaoming‘, ‘age‘: 15},
{‘name‘: ‘xiaoming‘, ‘age‘: 16},
{‘name‘: ‘xiaoming‘, ‘age‘: 17}
]
print(list_sort(lt, key=lambda d: d[‘age‘], reverse=False))
‘‘‘

第五题:自己实现一个字符串的find函数
1.在一个字符串中查找另一个字符串
2.找到了返回第一次出现的位置
3.没找到返回-1
4.参数s1为源字符串,参数s2为要查找的字符串
‘‘‘

s1 = ‘asdf5g4f5d2cx54‘
s2 = str(input(‘请输入一个字符串:‘))

def index_of_str(s1, s2):
if s2 in s1:
return s1.index(s2[0])
else:
return -1
print(index_of_str(s1,s2))
导入需要的包
from functools import  reduce
from  collections import  Counter
import re
from  datetime import datetime
import time
‘‘‘(10分)简述下列关键字或变量的作用1.global和nonlocal的作用2.pass、return、break、continue的作用3.*args、**kwargs的作用‘‘‘
def short_answer():
    return ‘‘‘
        global:全局变量,使用当前作用域作用于全局
        nonlocal:局部变量,声明使用的不是本地变量,是外部函数的局部变量
        pass:占位符号,保证程序运行顺畅,不会报错
        return:当函数在执行的时候遇到return时,立即停止运行,并返回结果
        break:当函数运行到break时,函数立即结束,不再往下继续进行
        continue:函数执行到continue时,会结束本次循环,继续进行下次循环
        *args:是一个元组,存放多余的位置参数
        **kwargs:是一个字典,存放多余的关键字参数
    ‘‘‘
‘‘‘(15分)1.求列表中所有数字元素的和2.列表中的元素都是整数3.列表中的元素可能重复,需要去掉重复元素4.需要使用高级函数实现求和5.返回计算的结果‘‘‘
def sum_of_list(lt):
    lt1 = []
    for i in lt:
        if i not in lt1:
            lt1.append(i)
    num = reduce(lambda x,y:x+y,lt1)
    return num
# lt = [1,2,3,8,6,4,8,7,2,4,5,4,6]
# print(sum_of_list(lt))
‘‘‘(15分)1.传入一个列表,列表中元素可能是任意类型2.使用高级函数完成非字符串元素的删除3.然后按照字符串的长度进行降序排序4.返回新的排序后的列表‘‘‘
def sort_list(lt):
    lt1 = list(filter(lambda x :isinstance(x,str),lt))
    lt2 = sorted(lt1,key=lambda x:len(x),reverse=True)
    return lt2
# lt = [12,‘sdfw‘,58,‘qwy‘,{‘name‘:6,‘age‘:20},‘rejdj‘]
# print(sort_list(lt))
‘‘‘(15分)1.返回一个字符串中出现次数第二多的单词2.字符串中可能有英文单词、标点、空格3.字符串中的英文字符全部是小写‘‘‘
def max_count_word(s):
    a = re.compile(r‘\W‘)
    b = a.sub(‘ ‘,s)
    c = b.split()
    print(c,type(c))
    d = dict(Counter(c))
    e = d.items()
    lt = sorted(e,key=lambda x :x[1],reverse=True)
    print(lt)
    return lt[1][0]
s = ‘      if   you        tell me     love  his,        we want   to say : i love      you too!‘
print(max_count_word(s))
?
‘‘‘(15分)1.传入年、月、日,返回该日是当年的第几天2.返回值是一个整数‘‘‘
def which_day(y, m, d):
    t1 = datetime(y,m,d)
    t2 = datetime(y,1,1)
    t = t1-t2
    return t.days+1
# print(which_day(2018,1,2))
‘‘‘(15分)1.写一个装饰器,查看函数执行的时间2.在装饰器中打印执行时间即可3.递归函数除外‘‘‘
def continue_time(func):
    def warrper(*args,**kwargs):
        start = time.time()
        func(*args,**kwargs)
        end = time.time()
        return ‘函数执行的时间:{}‘.format(end - start)
    return warrper
@continue_time
def test():
    a = 1
    i = 1
    while i<=1000:
        a = a*i
        i +=1
    print(a)
# print(test())
‘‘‘(15分)1.返回列表中最后剩下的元素2.传入列表,和步进值(隔几个删除数据)3.从第一个元素起,查到步进值就删掉该元素4.到结尾后,返回第一个元素继续累计查询‘‘‘
from collections import deque
import collections
def last_item(lt, step):
    while True:
        lt = collections.deque(lt)
        lt.rotate(step*-1)
        lt.pop()
        if len(lt)==1:
            return lt.pop()
lt = [1,2,3,4,5,6,7]
# print(last_item(lt,2))
 

原文地址:https://www.cnblogs.com/542684416-qq/p/9807286.html

时间: 2024-08-13 18:41:53

常见例题的相关文章

正則表達式常见例题

常见例题 例1:北美地区的电话号 编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成  一个3位的局号和一个4位的路号.局号和路号之间使用连字符分隔) 每位电话号码能够是随意数字,可是区号和局号的第一位数字不能是0或1.实际书写号码是往往会把区号写在括号中面,或者将区号使用连字符和后面的局号连接起来.比如:(555)123-1234或555-123-1234,有时候在括号你里面会包括空格.比如:(555 )123-1234 文本: J.Doe:248-555-1234

正则表达式常见例题

常见例题 例1:北美地区的电话号 编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成  一个3位的局号和一个4位的路号,局号和路号之间使用连字符分隔) 每位电话号码可以是任意数字,但是区号和局号的第一位数字不能是0或1.实际书写号码是往往会把区号写在括号里面,或者将区号使用连字符和后面的局号连接起来.例如:(555)123-1234或555-123-1234,有时候在括号你里面会包含空格.例如:(555 )123-1234 文本: J.Doe:248-555-1234

java编程基础知识及常见例题

⒈标识符: 只能包含数字.字母.下划线.$,并且不能以数字开头.语义直观规范 驼峰法则: 如:方法名.变量名采用驼峰法则 帕斯卡命名法: 如: 类.接口.枚举采用帕斯卡命名法包名:网址倒写,com.网址名.工程名.包名,,所有字母都小写 ⒉数据类型:⑴基本数据类型---按值传递,传递副本,修改副本不会影响原有数据    ① java里面有8种基本数据类型:int-整型,long-长整型,short-短整型,byte-字节    ②char-字符,float-单精度浮点型,,double-双精度浮

字符串,数组常见例题

1:在一串字符串中找出最长的字符 var st="The quick brown fox jumped bcaked jumped abscefg over the lazy dog 15625765675276"; function zifuchuanmax(str){ var arr=str.split(" ");//将字符串转化为数组 var max=arr[0]; for(var i=1;i<arr.length;i++){ if(max.length

acm常见算法及例题

转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法

python常见的例题

python语言类型:强类型语言,动态语言 例题 1.求100以内的奇数之和 可以通过对2取余不等于0的就是奇数或者使用for循环的步进打印奇数 s=0 for i in range(1,100,2) s+=i print(s) 2.求1~5的阶乘之和 使用for循环设定范围,在循环累加 a=1s=0for i in range(1,6):    a=a*i    s=s+aprint(s) 3.给定一个5位数,倒序打印 先要判断五位数的后面是否有0,如果有就不打印,如果中间有0的话不能跳过.例

常见算法和例题

第3章  算法与程序设计模块 3.1  算    法 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作. 常用的算法:列举了穷举搜索.递归.回溯.递推.模拟.分治.贪心.深度优先搜索.广度优先搜索等几种较为常用的算法,没有做过多的描述,一旦给出具体描述,容易使内容加深,产生严重学科取向的引导,符合教育部普通高中课程方案的特点,对于这些必需的方法和思想,关键不在于学生能不能,而在于教师是否想到,是否有过关注,引发学生对系统方法和思想的思考,重视建立编程思想,

[入门向选讲] 插头DP:从零概念到入门 (例题:HDU1693 COGS1283 BZOJ2310 BZOJ2331)

转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/7326874.html 最近搞了一下插头DP的基础知识……这真的是一种很锻炼人的题型…… 每一道题的状态都不一样,并且有不少的分类讨论,让插头DP十分锻炼思维的全面性和严谨性. 下面我们一起来学习插头DP的内容吧! 插头DP主要用来处理一系列基于连通性状态压缩的动态规划问题,处理的具体问题有很多种,并且一般数据规模较小. 由于棋盘有很特殊的结构,使得它可以与“连通性”有很强的联系,因此插头DP最常见的应用要数

点分治 理解及例题

点分治,基于点的分治: 其思路为: 子树结构:子树结构虽然的确是某点的一个子树,但我们讨论点分治时,相当于把这个子树摘下来,当做无根树处理: 对于一个子树结构: 处理子树结构的某个单点(未必是原根): 以这个被处理的点为新根,找出她的子树,变成递归下一层要处理的子树结构: 递归下一层: 在一个常见的,约定俗成的写法下(就是一个“说点分治就是指她”的写法) 其时间复杂度可以达到O(logn*f(num(1)) (num(i)为处理第i个单点时的数据范围): (f(i)为处理数据范围为i的单点的时间