引言

列表是按照特定格式排序而成的,有时候这种排序方式我们并不喜欢,我们希望它可以按照我们的方式来进行正序或者倒序排序,或其他的排序方式

反转与排序

比如说我这里有一组列表,里面存放的全部都是数值,但非常乱,要你将它按从小到大或从大到小排序
列表可以按正序排序,也可以按倒序排序,排序分永久性的和临时性的

列表反转

列表反转,使用 reverse() 方法将列表元素反过来排序
注意: 是将列表元素反过来排序,不是倒序排序
reverse() 方法对列表元素修改的排序永久性的,不过随时可以再调用 reverse() 来恢复原来的排序

  1. num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96]
  2. num.reverse()
  3. print(num)
  4. # 运行结果:[96, 55, 68, 18, 6, 53, 12, 23]

从以上示例中看到,使用 reverse() 方法进行反转排序仅仅是把列表元素头尾互换反转过来而已,并没有进行倒序排序

列表排序

列表可对数字、英文字母进行排序

1. 正序排序,使用 sort() 方法进行正序排序,永久性排序,排序后不可恢复原来的排序
  1. cars = ['bmw', 'audi', 'toyota', 'subaru']
  2. cars.sort()
  3. print(cars)
  4. # 运行结果:['audi', 'bmw', 'subaru', 'toyota']
2. 倒序排序,在 sort() 方法括号内传入参数 reverse=True 达到倒序排序效果。永久性,排序后不再保持原来排序方式的
  1. cars = ['bmw', 'audi', 'toyota', 'subaru']
  2. cars.sort( reverse=True )
  3. print(cars)
  4. # 运行结果:['toyota', 'subaru', 'bmw', 'audi']
3. 正序排序(临时),使用 sorted() 对列表进行临时排序(正序),不影响列表原来的排序方式
  1. num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96]
  2. print(num)
  3. # 运行结果:[23, 12, 53, 6, 18, 68, 55, 96]
  4. print( sorted(num))
  5. # 运行结果:[6, 12, 18, 23, 53, 55, 68, 96]
  6. print(num)
  7. # 运行结果:[23, 12, 53, 6, 18, 68, 55, 96]

从以上打印示例中看到,使用 sorted() 对列表进行临时正序排序,再次对列表进行打印时,还是原来的排序顺序

4. 倒序排序(临时),在 sorted() 方法传入 reverse=True 达到倒序排序效果,不影响列表原来的排序方式
  1. num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96]
  2. print(num)
  3. # 运行结果:[23, 12, 53, 6, 18, 68, 55, 96]
  4. print( sorted(num,reverse=True))
  5. # 运行结果:[96, 68, 55, 53, 23, 18, 12, 6]
  6. print(num)
  7. # 运行结果:[23, 12, 53, 6, 18, 68, 55, 96]

从以上打印示例中看到,通过在 sorted() 内传入 reverse=True 参数,列表进行了临时倒序排序
再次对列表进行打印时,还是原来的排序顺序

其他

使用 range() 函数生成一些列数字

只需要在括号内传入开始值及结束值就行了,这个也遵循左闭右开原则
例如以下这个示例,打印 05 的数字,实际只打印 04

  1. for num in range(0,5):
  2. print(num,end='\t')
  3. # 运行结果:0 1 2 3 4

如果想输入 05 则需要在这里输入

创建数字列表

使用 list() 函数将 range() 生成的一系列数字转为列表

  1. list_num = list(range(0,5))
  2. print(list_num)
  3. # 运行结果:[0, 1, 2, 3, 4]

range() 还可以指定步长,事实上 range() 函数可以传入三个参数,起始值、结束值、步长

  1. num_list = []
  2. for num in range(0,20,2):
  3. num_list.append(num)
  4. print(num_list)
  5. # 运行结果:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

像以上示例中,函数 range()0 开始,不断加2,直到达到或超过20

Python 基础 2-3 列表的反转与排序的更多相关文章

  1. 『Python基础-8』列表

    『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  2. python基础之02列表/元组/字典/set集合

    python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...

  3. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  4. Python基础学习Day4 列表的使用方法、range 用法、in用法

    一.列表 1.1列表:python基础数据类型之一:其他语言也有列表的概念,js 数组,可索引 ,可切片,可加步长 1.2列表的索引,切片,切片+ 步长 结果: 注意:列表里元素的数据类型,就是它本身 ...

  5. 2015/9/1 Python基础(6):列表

    列表和字符串类型很相似,是同样的序列式数据类型.但是字符串只能由字符组成,列表可以保留任意数目的Python对象的灵活的容器.Python的列表比C的数组要灵活,数组里面只能是一种类型,列表可以有多种 ...

  6. Python基础学习四 列表、元组、字典、集合

    列表list,用中括号“[ ]”表示 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的 2.通过偏移读取 组成列表的值叫做元素(Elements).每一个元素被标识一个索引,第一 ...

  7. Python基础数据类型之列表和元组

    一.列表   list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li ...

  8. python 基础篇 04(列表 元组 常规操作)

    本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...

  9. python基础学习笔记——列表及元组

    列表 列表的介绍  列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 列表的索引和切片 列表和字符串一样也拥有索引: lst = ['刘德华','周润发','周杰伦','向华强 ...

随机推荐

  1. java用最少循环求两个数组的交集、差集、并集

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

  2. 计数排序and基数排序

    1 计数排序,稳定    复杂度o(k + n) public static int[] countingSort(int[] nums) { int n = nums.length; ; ; i & ...

  3. 原创:微信小程序开发要点总结

    废话不多少,下面是对我从开发微信小程序的第一步开始到发布的总结,觉得对您有帮助的话,可以赞赏下,以对我表示鼓励. 一:首先注册登录微信公众平台,这个平台很重要,以后查文档全在上面看.https://m ...

  4. .NET加水印/验证码的NuGet包

    .NET加水印/验证码的NuGet包 我的在前两篇文章(水印,验证码)中,我介绍了使用Direct2D给图片加水印/验证码,今天我将其进行了封装,发布了一个NuGet包Sdcb.Imaging: &l ...

  5. iOS开发 8小时时差问题

    今天调试遇到时间计算的问题,发现怎么算都会有差别,后来仔细观察,发现有8小时的时差…… 这篇文章解释的很好,用到了,因此记之. ios有关时间打印出来差8小时的问题

  6. vue动态表单

    项目需求,需要根据后台接口返回数据,动态添加表单内容 说明:此组件基于Ant Design of Vue 目前支持六种表单控件:文本输入框(TextInput).文本域输入框(TextArea).下拉 ...

  7. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  8. 基于JaCoCo的Android测试覆盖率统计(二)

    > 本文章是我上一篇文章的升级版本,详见地址:https://www.cnblogs.com/xiaoluosun/p/7234606.html ## 为什么要做这个?1. 辛辛苦苦写了几百条测 ...

  9. 记录一下我做Udacity 的Data Scientist Nano Degree Project

    做项目的时候看了别人的blog,决定自己也随手记录下在做项目中遇到的好的小知识点. 最近在做Udacity的Data Scientist Nano Degree Project的Customer_Se ...

  10. Axis1.4 配置数组类型复杂对象

    最近 项目对接 webservice,要求SOAP 标准是1.1,然后在axis 和 spring ws 和 cxf 之间进行选择,然后axis 可以自定义服务,然后随tomcat启动发布,sprin ...