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

【Python】编写代码实现指定下标值顺序进行正序和倒序排序算法编程

🎉🎉 在本次python文章中,主要通过定义一个排序方法,实现一组数列能够按照另一组数列指定的位置进行重新排序输出,默认正序排序,可通过True表示逆序输出

目录

      • 1、知识点
      • 2、数列和元组
        • 1)错误遍历方式
        • 2)正确遍历方式
        • 3)下标方式遍历
        • 4)enumerate方式遍历
        • 5)逆序技巧
      • 3、自定义排序规则
      • 4、自定义排序编码
        • 1)函数命名
        • 2)定义变量
        • 3)实现效果
      • 5、常见排序算法

1、知识点

⭐️在实现自定义排序前,先来了解下基本的知识点和简单举例!

编号语言或插件修饰符说明
1pythondef定义方法关键词
2pythonlist()数列,就是数组,方括号括起来值,遍历只能获取到值
3pythontule()元组,括号括起来值,遍历可获取到值和下标
4pythonenumerate()函数用于遍历序列中的元素以及它们的索引
5pythonlen()统计长度
6python逆序小技巧[1,2,3,4,5][::-1]

2、数列和元组

1)错误遍历方式

list,数列,结合for循环遍历时,只能遍历值,无法获取到下标,如下方式会报错

定义变量并赋值:list=['python','is','very','good','code']

在这里插入图片描述

2)正确遍历方式

对于以为数组,for循环遍历,直接就是值,而不是下标
在这里插入图片描述

3)下标方式遍历

可以获取数组长度,然后结合for和range通过下标0开始进行遍历,如下
在这里插入图片描述

  • 代码如下
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16list=['python','is','very','good','code']listLength=len(list)
for index in range(listLength):value=list[index]print(f'下标={index},值={value}')

4)enumerate方式遍历

还有一种方式就是将数列和元组通过enumerate方式遍历

格式,注意顺序,第一个是索引,第二个参数是值:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16list=['python','is','very','good','code']for index,value in enumerate(list):print(f'下标={index},值={value}')

在这里插入图片描述

5)逆序技巧

数列逆序输出小技巧,-1表示从最后一个值反序输出
[1,2,3,4,5][::-1]
在这里插入图片描述

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16list=['python','is','very','good','code']
listNew=list[::-1]
print(f'正序输出={list}\r\n')
print(f'逆序输出={listNew}\r\n')

🏆🏆 原则:Write Less Do More!
📋📋 简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

3、自定义排序规则

1)按照order的元素作为lst对应位置的元素的应该顺序

2)并按照该顺序重新排列lst,返回排序后的结果列表

3)支持逆序

4、自定义排序编码

1)函数命名

定义函数名为,sort_by

def sort_by(lst:list, order:list, reverse=False)->list:pass

2)定义变量

定义两组list数列如下

list=['python','is','very','good','code']
numValue=[19,95,11,29,5,26,3,6]

3)实现效果

通过上面的一些知识点了解,即可完成数列的自定义正序排序和逆序排序
通过指定下标进行输出,并可设置逆序输出
在这里插入图片描述

  • 完整代码如下
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16
import sys def sort_by(lst:list, order:list, reverse=False) -> list:passnew_list = []for i in range(len(lst)):new_list.append(i)for index,value in enumerate(lst):position = order[index] - 1new_list[position] = valueif reverse==True:return new_list[::-1]else:return new_listlist=['python','is','very','good','code']
numValue=[3,2,1,5,4]print(sort_by(list, numValue)) print(sort_by(list, numValue, True)) 

5、常见排序算法

编号算法名称说明
1插入排序插入到已经排好序的有序表中
2选择排序选最小或最大放到排序位置
3冒泡排序重复地走访过要排序的元素列
4归并排序将已有序的子序列合并,得到完全有序的序列
5快速排序通过分界值将数组分成左右两部分
6希尔排序是插入排序的一种又称“缩小增量排序

在这里插入图片描述

总结:温故而知新,入门开发语言,就是需要不断的把基础打稳,才能更好的进阶!

http://www.lryc.cn/news/8422.html

相关文章:

  • Sitara™处理器的产品开发路线图
  • 岗位来啦-华为研发OD招聘
  • 【LeetCode】剑指 Offer 06. 从尾到头打印链表 p58 -- Java Version
  • 童年回忆--扫雷(包括标记功能和递归展开)--万字讲解让你学会扫雷制作
  • 【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理
  • 软件测试未来发展趋势怎么样
  • aws Distro for OpenTelemetry 可观测性workshop记录
  • Leetcode力扣秋招刷题路-0068
  • Nginx介绍及安装(windows版,Linux版)
  • Camera | 4.瑞芯微平台MIPI摄像头应用程序编写
  • 【1250. 检查「好数组」】
  • Spring 如何解决循环依赖?
  • CocoaPods使用指南
  • Kafka 消息队列
  • 华为OD机试 - 挑选字符串(Python)| 真题+思路+考点+代码+岗位
  • 对比Hashtable、HashMap、TreeMap有什么不同?
  • 测试新版Android Studio的手机镜像效果
  • 女生可以参加IT培训吗?
  • 刷题25-重排链表
  • VHDL-延迟模型-惯性延迟与传输延迟
  • 2023年美赛(MCM/ICM)简介
  • 5min完成linux环境Jenkins的安装
  • 华为OD机试 - 字母计数(Python)| 真题+思路+考点+代码+岗位
  • DENSE 数据集 - STF 数据集(CVPR 2020)
  • 华为OD机试 - 静态扫描最优成本(Python)| 真题+思路+考点+代码+岗位
  • 【ns-3】零基础安装教程
  • 华为OD机试 - 新学校选址(Python)| 真题+思路+考点+代码+岗位
  • 华为OD机试 - 最长合法表达式(Python)| 真题+思路+考点+代码+岗位
  • 夭寿啦!我的网站被攻击了了735200次还没崩
  • Java 反射深入浅出