列表偏移

题目要求

lst = [1,2,3,4,5],列表向右偏移两位后,变成lst = [4,5,1,2,3]

思路分析

第一种方式:用切片将 [1,2,3] 和 [4,5] 取出来,之后合并在一起

lst = [1,2,3,4,5]

result = lst[3:]+lst[:3]

print(result)

或者

lst = [1,2,3,4,5]

result = lst[len(lst)-2:]+lst[:len(lst)-2]

print(result)

这种始终利用了本来的切片方式,实际我们还是得通过算法方式锻炼底层思维逻辑。

第二种方法:算法,每次只偏移一位,取末尾数据,赋予第一位数据的逻辑。

首先,需考虑偏移的位置大于列表本身情况,例如向右偏移6位,实际上是右偏移一位,则取余即可,6%5=1。

其次,只考虑每次偏移一位的实现方式:先将末尾的位数记录下来,赋予一个临时变量tmp

其他位置的数据全部右移一位

将第一位数据重新赋为tmp

lst = [1,2,3,4,5]

count = int(input('请输入偏移位数:'))

count = count % len(lst)

for i in range(count):

tmp = lst[-1]

for j in range(len(lst)-1,0,-1):

lst[j] = lst[j-1]

lst[0] = tmp

print(lst)

优化思考

python当中的列表,其实就是线性表,因为它满足以下条件:元素之间有顺序、有限

第一个元素无前驱、最后一个元素无后续

中间元素各有其一前驱其一后续

元素之间是一对一关系

那么它的偏移操作就是符合线性表的(插入+删除)的操作:偏移位置大于线性表长度,则取余

获取最后一个位置为插入数据元素

从最后一个位置开始向前遍历到第1个位置,分别都将它们向后移动一个位置

将最后一个位置覆盖到第一个位置

线性表的插入操作就是:插入位置不合理,抛异常

如果线性表长度大于等于数组长度,则抛出异常或动态增加容量

从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置

将要插入元素填入位置i处

表长加1

例如:火车票插队加塞,后面全部退一步,但是后面的人不知道为什么要退后一步,只知道前面位置退,跟着退

线性表的缺点:从这个偏移案例看出,线性表的插入、删除等操作需要移动大量元素

欢迎交流相互学习。

python简单算法题_python - 简单算法题 - 列表偏移相关推荐

  1. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

    写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...

  2. python算法题_python基本算法题(一)

    1.3位水仙花数计算 "3位水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身. 例如: ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C ...

  3. python录音文件降噪_Python | 简单的扩音,音频去噪,静音剪切

    原标题:Python | 简单的扩音,音频去噪,静音剪切 之前一段时间一直在搞数字语音识别,在训练算法上耗费了很多时间,但结果不尽人意.后来才发现自己一直忽视了音频预处理的一步,于是转而囫囵吞枣般学习 ...

  4. python算法口诀_Python 经典算法100及解析(小结)

    1:找出字符串s="aaabbbccceeefff111144444"中,字符出现次数最多的字符 (1)考虑去重,首先将字符串进行过滤去重,这样在根据这些字符进行循环查询时,将会减 ...

  5. python 数据挖掘 简书_python 数据挖掘算法简要

    前言 数据挖掘是通过对大量数据的清理及处理以发现信息,并将这原理应用于分类,推荐系统,预测等方面的过程.本文基于<面向程序员数据挖掘指南>的理解,扩展学习后的总结.不足之处还请赐教,觉得有 ...

  6. python统计文本字数_Python 简单应用--文章字数统计

    Python是做数据处理很好的工具,这里小时牛刀,用Python完成文章的字数统计. 系统:Ubuntu16.04 Python版本:3.4 文本:<西游记>txt片段 结果:存放于res ...

  7. python爬取图片实例_Python简单爬取图片实例

    都知道Python的语法很简单易上手,也很适合拿来作爬虫等等,这里就简单讲解一下爬虫入门--简单地爬取下载网站图片.html 效果 就像这样自动爬取下载图片到本地:python 代码: 其实很简单,咱 ...

  8. python数据分析算法调用_python数据分析算法(决策树2)CART算法

    CART(Classification And Regression Tree),分类回归树,,决策树可以分为ID3算法,C4.5算法,和CART算法.ID3算法,C4.5算法可以生成二叉树或者多叉树 ...

  9. python中文文本分析_python简单的分析文本

    import collections import re #读取tips.txt文件内容,type(mytips)=str with open("tips.txt","r ...

最新文章

  1. 锐捷ap怎么设置_WiFi又不稳定?怎么办,看这里
  2. 一篇小黄文牵出国内最大黑产
  3. iOS之常用的正则表达式
  4. 棋牌游戏服务器架构: 总体设计
  5. “智云大咖秀”:大咖摄影师谈惊艳亮相的“大咖级”设备
  6. Xamarin Mono for VS开发窗体标题(Title)乱码解决方案
  7. asp.net cookie操作-添加cookie,添加键值,移除cookie,移除键值
  8. python圆形_Python中的圆形范围
  9. 数据科学入门与实战:玩转pandas之三
  10. 识别手指pos 20个
  11. Spring Cloud 设置Feign的日志记录级别
  12. 洛谷——P1075 [NOIP2012 普及组] 质因数分解
  13. java进程的守护进程脚本
  14. Git分支基本命令+coding webhook+lnmp
  15. python编写环境手机_给android手机上配置python运行环境
  16. android游戏策划方案,游戏策划案模板.doc
  17. 京东运营体系组织架构曝光,自建物流秘密在这里
  18. 【HUSTOJ】1053: 字符图形9-数字正三角
  19. MariaDB数据存储引擎的选择
  20. hdu5956, The Elder (树型dp, 斜率优化)

热门文章

  1. cf游戏进不去计算机,cf更新之后进不去 穿越火线进不去解决方法
  2. Slurm作业启动原理
  3. java -jar 执行jar包出现 java.lang.NoClassDefFoundError
  4. (一)Android基础界面设计
  5. Jenkins修改端口号
  6. Vue单向绑定与双向绑定解析
  7. linux怎么运行quartus,如何安裝Linux版本的Quartus II
  8. RSRP、RSSI、RSRQ、SINR简单的解释
  9. Web UI - Javascript之DOM Ready
  10. ele ui 清空选项和重新校验