首页

文章

python列表排序方法

发布网友 发布时间:2022-04-19 21:39

我来回答

2个回答

懂视网 时间:2022-04-28 08:05

python列表排序:1、冒泡排序,是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来;2、插入排序,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

相关学习推荐:python教程

1、冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

2c7ac844002518bcfa22b74526f1da5.png

def bubble_sort(list):
 n = len(list)
 for i in range(n - 1):
 for j in range( 0,n - 1 - i):
  if list[j] > list[j + 1]:
  list[j], list[j + 1] = list[j + 1], list[j]
 # if list[i] > list[i + 1]:
 # list[i], list[i + 1] = list[i + 1], list[i]
 print(list)
list=[2,4,6,8,1,3,5,7,9]
bubble_sort(list)
#结果:[1,2,3,4,5,6,7,8,9]

2、插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前的扫描过程中,需要把已排序元素逐步向后挪位,为最新元素提供插入空间。

afaa6414925c912151fc16e2ea5698a.png

def insertion_sort(list):
 n = len(list)
 for i in range(1, n):
 for j in range(i, 0, -1):
 if list[j] < list[j - 1]:
 list[j], list[j - 1] = list[j - 1], list[j]
 else:
 break
 print(list)
insertion_sort([3,0,2,5,8,5,9,41,0,1,6])
#结果:[0, 0, 1, 2, 3, 5, 5, 6, 8, 9, 41]

3、选择排序

选择排序(Selection Sort )是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素。放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

def selection_sort(list):
 n = len(list)
 for i in range(0, n -1):
 min_index = i
 for j in range(i + 1, n):
  if list[min_index] > list[j]:
  min_index = j
 if i != min_index:
  list[min_index], list[i] = list[i], list[min_index]
 print(list)
selection_sort([5,9,6,42,9,4,66,2,3,0,1])
#结果:0, 1, 2, 3, 4, 5, 6, 9, 9, 42, 66]

总结:

import random
# 随机生成1-1000之间无序序列整数数据
def generator():
 random_data = []
 for i in range( 0, 10 ):
 random_data.append( random.randint( 1, 1000 ) )
 return random_data
# 冒泡排序
def bubble_sort(list):
 # 序列长度
 n = len( list )
 for i in range( 0, n ):
 for j in range( i , n ):
  if list[i] > list[j]:
  list[i], list[j] = list[j], list[i]
 return list
 # 选择排序
def selection_sort(list):
 n = len(list)
 for i in range(0, n -1):
 min_index = i
 for j in range(i + 1, n):
  if list[min_index] > list[j]:
  min_index = j
 if i != min_index:
  list[min_index], list[i] = list[i], list[min_index]
 return list
#插入排序
def insertion_sort(list):
 n = len(list)
 for i in range(1, n):
 for j in range(i, 0, -1):
 if list[j] < list[j - 1]:
 list[j], list[j - 1] = list[j - 1], list[j]
 else:
 break
 return list
if __name__ == "__main__":
 # 生成随机无序数据
 list = generator()
 # 打印无序数据
 print( '随机生成的无序数据:',list )
 # 冒泡排序
 sorted_data = bubble_sort( list )
 #插入排序
 insertion_data=insertion_sort(list)
 #选择排序
 selection_data=selection_sort( list )
 # 打印排序结果
 print( '冒泡排序:',sorted_data )
 print( '插入排序:', insertion_data )
 print( '选择排序:', selection_data )
'''
结果:
随机生成的无序数据: [300, 517, 591, 209, 204, 789, 417, 739, 803, 393]
冒泡排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
插入排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
选择排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
'''

想了解更多编程学习,敬请关注php培训栏目!

热心网友 时间:2022-04-28 05:13

列表的sort方法就是用来进行排序的。

主要就是两个参数,key,reverse


先说reverse,这个很简单,就是指出是否进行倒序排序:一般情况下,1排在2的前面,而倒序则相反。


key参数:一般它是一个函数,它接受列表中每一个元素,返回一个可用用于比较的值。

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

s.sort(key=lambda _: _**2%7)

print(s)

输出的是:[1, 3, 4, 2, 5]

如果看不懂lambda表达式,可以看这一段等价的写法:

def myfn(x):

....return (x * x) % 7


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

s.sort(key=myfn)

print(s)

输出的结果是一样的。

key使用的函数可以是自定义函数也可以pytho内置的函数,或者是某个类或者实例的方法,只要它能接受一个参数,返回一个可比较的值即可。比如这样:

s=[[1,2,4],[3,3,5],[1,1,1],[5,7,9]]

s.sort(key=max)  # 直接使用max函数作为排序依据

print(s)

[[1, 1, 1], [1, 2, 4], [3, 3, 5], [5, 7, 9]]


玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 jython和python的区别是什么 python 计算程序运行了多长时间 Pytho前面加’’’是什么意思 如何看待python的未来的发展趋势?未来几年好就业吗? pytho学习要求? Python这两年还火吗? 猎豹安全大师里保险柜里已存的照片为什么都被锁上打不开? python复数的表达形式是怎么样的? 如何在pytho语言所选的多行代码添加#号,同时撤销... Pytho中自带的idle,练习代码的时候,无法删除已经... python打开怎么运行 Pytho是什么意思? python学到什么程度可以就业 猎豹安全大师自动安装!我已烦死! 银行买金条靠谱吗,会不会有什么猫腻? 我想在建行炒黄金·可是发现和我想的不一样·黄金买... 20150206建行的纸黄金报价 投资金条怎么回收,回收价和市场价格有什么关系? 建行的黄金投资的手续费是多少,? 建行的实物黄金为什么比工行的实物黄金价格高许多 Pytho连接数据库TypeError: __init__() takes 1 po... pytho 将txt文件转换为列表 关于python第三方模块 求指教 复数3+4i在Python中的表示方式是? 苹果se2值得入手吗? 苹果se2值得买吗? 2021苹果se2还值得入手吗? 请问新款苹果SE2这款机子性能怎么样 值得购买吗? iphonese2对比iphone11 苹果se2和苹果xr哪个好 苹果se2怎么样值得买吗 苹果se2性能是不是空有?性能是不是不能完全释放? 苹果11和苹果se2哪个好用 苹果x和se2对比 苹果xr和se2哪个好 苹果se2和xr哪个更值得购买 大家晚上好,我头些日子下载了猎豹安全大师,今天想用它可是我一点击却提示我没安装应用,这是怎么回事我 如何关闭猎豹安全大师应用锁 分享是什么意思? 什么叫分享,分享的意义及注意事项是什么?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com