Python实现指定数组下标值正序与倒序排序算 * 能举例
作者:小5聊 发布时间:2023-04-03 10:37:26
标签:数组,下标值,排序
前言
在本次python文章中,主要通过定义一个排序方法,实现一组数列能够按照另一组数列指定的位置进行重新排序输出,默认正序排序,可通过True表示逆序输出
1、知识点
⭐️在实现自定义排序前,先来了解下基本的知识点和简单举例!
编号 | 语言或插件 | 修饰符 | 说明 |
---|---|---|---|
1 | python | def | 定义方法关键词 |
2 | python | list() | 数列,就是数组,方括号括起来值,遍历只能获取到值 |
3 | python | tule() | 元组,括号括起来值,遍历可获取到值和下标 |
4 | python | enumerate() | 函数用于遍历序列中的元素以及它们的索引 |
5 | python | len() | 统计长度 |
6 | python | 逆序小技巧 | [1,2,3,4,5][::-1] |
2、数列和元组
2.1、错误遍历方式
list,数列,结合for循环遍历时,只能遍历值,无法获取到下标,如下方式会报错
定义变量并赋值:list=['python','is','very','good','code']
2.2、正确遍历方式
对于以为数组,for循环遍历,直接就是值,而不是下标
2.3、下标方式遍历
可以获取数组长度,然后结合for和range通过下标0开始进行遍历,如下
代码如下
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16
list=['python','is','very','good','code']
listLength=len(list)
for index in range(listLength):
value=list[index]
print(f'下标={index},值={value}')
2.4、enumerate方式遍历
还有一种方式就是将数列和元组通过enumerate方式遍历
格式,注意顺序,第一个是索引,第二个参数是值:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16
list=['python','is','very','good','code']
for index,value in enumerate(list):
print(f'下标={index},值={value}')
2.5、逆序技巧
数列逆序输出小技巧,-1表示从最后一个值反序输出[1,2,3,4,5][::-1]
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16
list=['python','is','very','good','code']
listNew=list[::-1]
print(f'正序输出={list}\r\n')
print(f'逆序输出={listNew}\r\n')
3、自定义排序规则
1)按照order的元素作为lst对应位置的元素的应该顺序
2)并按照该顺序重新排列lst,返回排序后的结果列表
3)支持逆序
4、自定义排序编码
4.1、函数命名
定义函数名为,sort_by
def sort_by(lst:list, order:list, reverse=False)->list:
pass
4.2、定义变量
定义两组list数列如下
list=['python','is','very','good','code']
numValue=[19,95,11,29,5,26,3,6]
4.3、实现效果
通过上面的一些知识点了解,即可完成数列的自定义正序排序和逆序排序
通过指定下标进行输出,并可设置逆序输出
完整代码如下
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-16
import sys
def sort_by(lst:list, order:list, reverse=False) -> list:
pass
new_list = []
for i in range(len(lst)):
new_list.append(i)
for index,value in enumerate(lst):
position = order[index] - 1
new_list[position] = value
if reverse==True:
return new_list[::-1]
else:
return new_list
list=['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 | 希尔排序 | 是插入排序的一种又称“缩小增量排序 |
总结:
温故而知新,入门开发语言,就是需要不断的把基础打稳,才能更好的进阶!
来源:https://blog.csdn.net/lmy_520/article/details/129054657


猜你喜欢
- 一、前言容器使用沙箱机制,互相隔离,优势在于让各个部署在容器的里的应用互不影响,独立运行,提供更高的安全性。本文主要介绍python应用(d
- 如何更改 pandas dataframe 中两列的位置:把其中的某列移到第一列的位置。原来的 df 是:df = pd.read_csv(
- 阅读系列教程上一篇:FrontPage2002简明教程二:文字与图像的处理通常网页的布局使用到的是FrontPage 2002中的表格和框架
- 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家。一、导入excel表格文件处理函数import xlwt注
- 如下所示:x = 3print(x+"nihao")这样会报错x = 3print(x,"nihao"
- pycharm安装lxml库失败怎么办?众所周知,在pycharm中安装lxml库,一般的安装流程流程为file->settings-
- 一、概述前提:已安装 Python,如下图所示:1.1 检查是否已配置成功(选)1. 打开运行窗口 (1) 快捷键  
- 刚看到一个朋友写的用javascript连接excel数据库的程序,想把它改成access数据库的,就找到了这两篇文章 ----------
- 当使用MySQL做站点的时候,肯定会有不知道的错误发生,怎么记录呢?以下是具体解决方法:class.method //建立错误日志 func
- 最近在学爬虫时发现许多网站都有自己的反爬虫机制,这让我们没法直接对想要的数据进行爬取,于是了解这种反爬虫机制就会帮助我们找到解决方法。常见的
- 本文实例讲述了python将MongoDB里的ObjectId转换为时间戳的方法。分享给大家供大家参考。具体分析如下:MongoDB里的_i
- 问题描述在电脑中重新安装Anaconda3&PyCharm后,运行原来的程序画图时出现了下图界面。不能弹出如下图所示的“figure”窗口。
- 三天前,你说下面的图是 PS 的,我信。而今天,这的的确确是张截图 -- 是的,这已经 不是梦想,是现实 -- 但实现梦想的不是微软,是 G
- 论坛里面有不少人在使用Javascript编写Asp,经常有人在论坛提问,为什么Asp对象在对比指定值时返回结果不对?现在在这里给大家写点关
- 说明:原来安装的python为64位,故安装的pyinstaller和打包后的exe都为64位。而64位的exe文件在32位的win7操作系
- 问题描述:idea打开窗口/tab过多导致隐藏解决办法如下图所示,如果打开太多的类,就会隐藏在后面的小三角里面,开发的时候不会很方便。解决方
- 下面是我们插入到这个tuangou表的数据: id web city type 1 拉手网 北京 餐饮美食 2 拉手网 上海 休闲娱乐 3
- 对于程序员来说,编程是一个相当耗费时间和经历的过程,而在这个过程中,一个称手而高效的工具就显得非常重要。加上近期有不少小伙伴在问一些方方面面
- 表一、运算符与特殊字符 运算符描述/选择子元素,返回左侧元素的直接子元素;如果"/"位于最左侧表示选择根结点的直接子元素
- 在MAC/LINUX环境下,执行vi hello.py命令,并输入以下代码import webimport sysurls = ("