飞道的博客

Python学习04:序列的概念和列表的用法

472人阅读  评论(0)

笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 笔者原创,文章欢迎转载,如果喜欢请点赞+关注,感谢支持!

 

目录

一、序列

1.1 数据结构——序列

1.2 序列的操作

1.3 内置函数len、min和max

二、列表

2.1 列表的定义

2.2 列表与元组和字符串的不同

2.3 访问列表元素

2.4 修改列表元素

2.5 添加列表元素

2.6 删除列表元素

2.7 给列表排序


序列的概念和列表的用法

一、序列

在之前的Python学习里,我们学习了字符串数字等数据类型。这篇主要讲关于数据类型列表的用法。在研究列表之前需要先讲一下序列的概念。

1.1 数据结构——序列

引入Python里一个新的概念:数据结构

数据结构是以某种方式(比如编号)组合起来的数据元素(如数、字符、乃至其他的数据结构)集合。序列就是最基本的数据结构。序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,以此类推。

所以这也是为什么《Python学习》系列里是从00开始作为标题,而不是从01开始。

Python内置多种序列,而最常用的两种就是:列表元组,当然字符串也是序列,在后面的内容中会讲到

列表和元组的不同:

列表是可以修改的,而元组是不可以修改的。所以在编写程序的时候,大多数的元组都可以被列表所代替,只有在将元组用作字典键的时候是不能用列表来代替元组的,因为字典键是不允许修改的。

列表适用于需要中途添加元素的情形,而元组适用于处于目中考虑需要禁止修改序列的情况。禁止修改序列通常用于技术方面的考虑,与Python的内部工作原理相关。这也是有些内置函数返回元组的原因所在。

Python支持一种数据结构的基本概念:容器。容器基本上就是可包含其他对象的对象。序列(如列表和元组)和映射(如字典)

都是容器。这里先不展开去将容器的概念,现在只需要知道:

  • 在序列中,每个元素都有编号。
  • 在映射中,每个元素都有名称(键)。
  • 还有一种容器——集合(set)既不是序列也不是映射。

1.2 序列的操作

索引、切片、相加、相乘、成员资格检查、迭代(迭代相关内容后续详细讲解)。

  • 索引

序列中所有元素都有编号,从0递增。比如使用编号访问各个元素:


  
  1. str = 'School'
  2. print(str[ 0])
S

一个字符就是只包含一个元素的字符串,字符串就是字符组成的序列。

负数索引:


  
  1. str = 'School'
  2. print(str[ -1])

Python将从右(即从最后一个元素)开始往左数,因此-1是最后一个元素的位置,以此类推。

  • 切片

索引访问单个元素,切片(slicing)来访问特定范围内的元素,为此,可以使用两个索引,并用冒号分隔(由于当前还未讲到列表,所以都由字符串来进行举例):


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ 2: 8])
tps://

需要注意的是:提供的两个索引来制定切换的边界,其中第一个索引制定的元素包含在切片内,第二个索引制定的元素不包含在切片内。所以索引为8的字符并没能打印出来。

如何访问字符串中的最后三个字符?使用负数索引:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ -3: -1])
Ji

这里可以看到索引-3是字符J,打印从J开始,到i结束。也就是索引-1是不包含最后一位字符的。使用索引0行么?


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ -3: 0])

在运行一下看下结果:


 

显然结果不是我们想要的。那是为什么呢?

实际上在执行切片操作时,如果第一个索引指定的元素位于第二个索引指定的元素后面(-3位于0后面,也就是倒数第3个元素位于第1个元素后面),结果为空序列。

所以这里我们用简写:如果切片位于序列末尾,可以省略第二个索引,从倒数第3个字符到末尾:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ -3:])
Jin

再比如,从正数第4个字符到末尾:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ 3:])
ps://blog.csdn.net/JackMengJin

再或者从开头到正数第4个字符:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[: 4])
http

如果将两个索引都省略,相当于复制整个序列:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[:])
https://blog.csdn.net/JackMengJin

切片步长的概念

普通切片里步长都是为1,意味着从一个元素移到下一个元素:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ 1: 8: 1])
ttps://

如果指定的步长大于1,将跳过一些元素。例如:当步长为2时,将从起点和终点之间每隔一个元素提取一个元素:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ 1: 8: 2])
tp:/

例如要从序列中每隔3个元素提取1个,只需提供步长4即可:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[:: 4])
hsb.ntcnn

需要注意的是,步长不能为0。但可以为负数,即从向左提取元素。

步长为-1时::


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[:: -1])
niJgneMkcaJ/ten.ndsc.golb//:sptth

步长为-3时:


  
  1. myCSDN = 'https://blog.csdn.net/JackMengJin'
  2. print(myCSDN[ 14: 2: -3])
sgb:
  • 相加

可以使用加法运算符+来拼接序列。


  
  1. words = 'welcome to my CSDN:'
  2. myCSDN = 'https://blog.csdn.net/JackMengJin'
  3. print(words + myCSDN)
welcome to my CSDN:https://blog.csdn.net/JackMengJin

注意,不能拼接不同类型的序列。

  • 相乘

将序列与数x相乘时,将重复这个序列x次来创建一个新序列:


  
  1. words = 'welcome to my CSDN!'
  2. print(words * 5)
welcome to my CSDN!welcome to my CSDN!welcome to my CSDN!welcome to my CSDN!welcome to my CSDN!

乘法在列表中的使用放在后面讲解。

  • 成员资格检查

要检查特定的值是否包含在序列中,可使用运算符in,称为布尔运算符

返回的值:满足时返回True,不满足时返回False。称为布尔值。


  
  1. words = 'welcome to my CSDN!'
  2. print( 'w' in words)
  3. print( '3' in words)

  
  1. True
  2. False

需要注意,判断正确错误是区分字母大小写的:


  
  1. words = 'welcome to my CSDN!'
  2. print( 'W' in words)
  3. print( 'w' in words)

  
  1. False
  2. True

1.3 内置函数len、min和max

长度、最小值和最大值。

函数len返回序列包含的元素个数,而min和max分别返回序列中最小和最大的元素:


  
  1. numbers = '0123456789'
  2. print(max(numbers))
  3. print(len(numbers))
  4. print(min(numbers))

  
  1. 9
  2. 10
  3. 0

max和min函数可以直接指定实参,直接将数作为实参使用,而不是序列,当然len函数不行这么操作:


  
  1. print(max( 1, 2, 3, 4, 5, 6, 7, 8, 9))
  2. print(min( 1, 2, 3, 4, 5, 6, 7, 8, 9))

  
  1. 9
  2. 1
print(len(1,2,3,4,5,6,7,8,9))

  
  1. Traceback (most recent call last):
  2. File "G:/helloWorld/python/pycharm/NingMeng/demo377.py", line 3, in <module>
  3. print(len( 1, 2, 3, 4, 5, 6, 7, 8, 9))
  4. TypeError: len() takes exactly one argument ( 9 given)

成员资格检查在列表中的使用放在后面讲解。

 

二、列表

列表能够在一个地方存储成组的信息,可以包含几个元素,也可以包含数万个元素。列表是新手可以直接使用的最强大的Python功能(之一)。

2.1 列表的定义

列表由一系列按特定顺序排列的元素组成。

在Python中用方括号来表示列表,并用逗号来分隔其中元素:


  
  1. numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  2. names = [ 'Jack', 'Rose', 'Kobe', 'James']

由于列表是序列的一种,所以序列的所有操作(索引、切片、相加、相乘、成员资格检查)都可以在列表中使用:

索引:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James']
  2. print(names[ 1])
  3. print(names[ -2])

  
  1. Rose
  2. Kobe

切片:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names[ 1: 5])
  3. print(names[ 1: 8: 2])
  4. print(names[:: -1])
  5. print(names[:: -2])

  
  1. [ 'Rose', 'Kobe', 'James', 'Jane']
  2. [ 'Rose', 'James', 'King', 'Jone']
  3. [ 'Tina', 'May', 'Mary', 'Jone', 'Bill', 'King', 'Jane', 'James', 'Kobe', 'Rose', 'Jack']
  4. [ 'Tina', 'Mary', 'Bill', 'Jane', 'Kobe', 'Jack']

相加:


  
  1. numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  2. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  3. print(names + numbers)
['Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

相乘:


  
  1. numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  2. print(numbers * 8)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

成员资格检查:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print( 'jack' in names)
  3. print( 'Jack' in names)

  
  1. False
  2. True

  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(min(names))
  3. print(max(names))
  4. print(len(names))

  
  1. Bill
  2. Tina
  3. 11

2.2 列表与元组和字符串的不同

列表不同于元组和字符串的地方在于——列表是可变的,即可以修改其内容,而且列表有很多特有的方法

  • 鉴于不能向修改列表那样修改字符串,因此可以使用函数list,使用字符串来创建按列表:
print(list('hello'))
['h', 'e', 'l', 'l', 'o']

可将任何序列(不仅仅是字符串)作为list的参数。

  • 将字符列表转换为字符串

  
  1. print([ 'h', 'e', 'l', 'l', 'o'])
  2. print(type([ 'h', 'e', 'l', 'l', 'o']))
  3. #将列表转换为字符串
  4. print( ' '.join([ 'h', 'e', 'l', 'l', 'o']))
  5. print(type( ' '.join([ 'h', 'e', 'l', 'l', 'o'])))

  
  1. [ 'h', 'e', 'l', 'l', 'o']
  2. < class 'list'>
  3. h e l l o
  4. < class ' str'>

2.3 访问列表元素

想要访问列表元素,指出列表的名称,在指出元素的索引,放在方括号内即可:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names[ 6])
Bill

当请求获取列表元素时,Python只返回该元素,而不包括括号和引号。

同时可以对列表元素使用字符串方法:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names[ 8])
  3. print(names[ 8].lower())
  4. print(names[ 8].upper())
  5. print(names[ 8].swapcase())

  
  1. Mary
  2. mary
  3. MARY
  4. mARY

2.4 修改列表元素

之前写到列表是可变的,那么如何修改列表元素呢?

修改列表元素的语法与访问列表元素的语法类似:先指定列表名和要修改元素的索引,再给该元素赋值。


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. names[ 4] = 'Gigi'
  4. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Gigi', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']

可以通过打印看到,修改索引4的值已经换成了新值,而列表其他元素的值是不受影响的。

需要注意的是,不能给不存在的元素赋值


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. names[ 21] = 'Gigi'
  3. print(names)

  
  1. Traceback (most recent call last):
  2. File "G:/helloWorld/python/pycharm/NingMeng/demo377.py", line 6, in <module>
  3. names[ 21] = 'Gigi'
  4. IndexError: list assignment index out of range
  5. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']

2.5 添加列表元素

Python里方法是什么?

方法就是用来描述对象所具有的行为。方法是与对象(列表、数字、字符串、元组等)联系紧密的函数。

方法的分类

  • 普通方法:直接用self调用的方法。
  • 私有方法:__函数名,只能在类中被调用的方法。
  • 属性方法:@property,将方法伪装成为属性,让代码看起来更合理。
  • 特殊方法(双下划线方法):以__init__为例,是用来封装实例化对象的属性,只要是实例化对象就一定会执行__init方法,如果对象子类中没有则会寻找父类(超类),如果父类(超类)也没有,则直接继承object(python 3.x)类,执行类中的__init__方法。
  • 类方法:通过类名的调用去操作公共模板中的属性和方法。
  • 静态方法:不用传入类空间、对象的方法, 作用是保证代码的一致性,规范性,可以完全独立类外的一个方法,但是为了代码的一致性统一的放到某个模块(py文件)中。

方法的调用

  • 通过“对象.方法名”的方式进行调用。

更多Python方法的概念会在之后函数学习中具体讨论,这里不再详细说明。

  • 在列表末尾添加元素——方法append()

  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. names.append( 'Carter')
  4. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina', 'Carter']

方法append最大的作用是动态地创建列表。

先创建一个空列表,在使用一系列的append()方法来添加元素:


  
  1. cars = []
  2. print(cars)
  3. cars.append( '奥迪')
  4. cars.append( '别克')
  5. cars.append( '大众')
  6. print(cars)

  
  1. []
  2. [ '奥迪', '别克', '大众']

这种创建列表的方式是极其常见的,由于经常要等程序运行后才知道用户要在程序中存储哪些数据。为了控制用户,首先创建空列表,用于存储用户将要输入的值,再将用户提提供的每个新值添加到列表中。

  • 在列表中插入元素——方法insert()

方法insert()可以在列表的任何位置添加新元素,前提是需要指定新元素的索引和值:


  
  1. cars = []
  2. print(cars)
  3. cars.append( '奥迪')
  4. cars.append( '别克')
  5. cars.append( '大众')
  6. print(cars)
  7. cars.insert( 0, '宝马')
  8. print(cars)

  
  1. []
  2. [ '奥迪', '别克', '大众']
  3. [ '宝马', '奥迪', '别克', '大众']

方法insert()在索引0出添加空间,并将'宝马'存储到这个地方,其他每个元素都右移一个位置。

2.6 删除列表元素

有添加就有删除,下面来看看如何删除列表元素。

  • 使用del语句删除元素

如果知道了要删除元素在列表中的位置,可以使用del语句来删除:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. del names[ 2]
  4. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']

使用del可以删除任何位置的列表元素,前提是知道其索引,当然不能超出索引范围。

注意:使用del语句删除列表中元素后,就无法再访问到它了。

  • 使用方法pop()删除元素

pop()的应用场景在于删除元素后,继续使用该值。同样的pop()可以删除列表末尾的元素,可以理解为:列表就像是一个栈,删除列表的末尾相当于弹出栈顶元素。


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. name_pop = names.pop()
  4. print(names)
  5. print(name_pop)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May']
  3. Tina

同样pop()可以来删除列表中任何位置的元素,需要在括号中指定要删除的元素的索引:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. name_pop = names.pop( 6)
  4. print(names)
  5. print(name_pop)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Jone', 'Mary', 'May', 'Tina']
  3. Bill

如果删除后不再使用该值,则用del语句删除;如果还要继续使用删除的值,则用pop()方法。

  • 根据具体值删除元素

如果只知道删除元素的值而不知道索引的话,使用方法remove()


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. names.remove( 'Jone')
  4. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Mary', 'May', 'Tina']

remove()方法同样是删除元素后,就彻底删除,无法再访问到该值:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. name_remove = names.remove( 'Jone')
  4. print(names)
  5. print(name_remove)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Mary', 'May', 'Tina']
  3. None

不过如果将要删除的值存储在变量中,再通过remove()方法删除该变量,变量里的值可以继续使用,不受影响:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. name_re = 'Jone'
  4. names.remove(name_re)
  5. print(names)
  6. print(name_re)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Mary', 'May', 'Tina']
  3. Jone

当然,如果删除不存在的值,那是不可以的:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. name_re = 'J123'
  4. names.remove(name_re)

  
  1. Traceback (most recent call last):
  2. File "G:/helloWorld/python/pycharm/NingMeng/demo377.py", line 7, in <module>
  3. names.remove(name_re)
  4. ValueError: list.remove(x): x not in list

2.7 给列表排序

当需要以特定的顺序呈现列表信息时,则需要给列表排序。

  • 永久性排序

sort()方法按字母、数字顺序排列:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. names.sort()
  4. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Bill', 'Jack', 'James', 'Jane', 'Jone', 'King', 'Kobe', 'Mary', 'May', 'Rose', 'Tina']

  
  1. numbers = [ 8, 91, 81, 7, 6, 11, 23, 45, 1, 0, 134, 342, 2, 76, 32]
  2. print(numbers)
  3. numbers.sort()
  4. print(numbers)

  
  1. [ 8, 91, 81, 7, 6, 11, 23, 45, 1, 0, 134, 342, 2, 76, 32]
  2. [ 0, 1, 2, 6, 7, 8, 11, 23, 32, 45, 76, 81, 91, 134, 342]

还可以按照相反的顺序排列列表元素,需要向sort()方法传递参数reverse = True,同样也是对排序进行永久性的修改:


  
  1. numbers = [ 8, 91, 81, 7, 6, 11, 23, 45, 1, 0, 134, 342, 2, 76, 32]
  2. print(numbers)
  3. numbers.sort(reverse= True)
  4. print(numbers)
  5. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  6. print(names)
  7. names.sort(reverse= True)
  8. print(names)

  
  1. [ 8, 91, 81, 7, 6, 11, 23, 45, 1, 0, 134, 342, 2, 76, 32]
  2. [ 342, 134, 91, 81, 76, 45, 32, 23, 11, 8, 7, 6, 2, 1, 0]
  3. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  4. [ 'Tina', 'Rose', 'May', 'Mary', 'Kobe', 'King', 'Jone', 'Jane', 'James', 'Jack', 'Bill']
  • 临时排序

函数sort()可以按特定顺序显示列表元素,同时不影响在列表中的原始排列顺序:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. names_sorted = sorted(names)
  4. print(names_sorted)
  5. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Bill', 'Jack', 'James', 'Jane', 'Jone', 'King', 'Kobe', 'Mary', 'May', 'Rose', 'Tina']
  3. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']

同样的,要按顺序相反显示还是需要向函数sorted()传递参数reverse = true:


  
  1. names = [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. print(names)
  3. names_sorted = sorted(names,reverse= True)
  4. print(names_sorted)
  5. print(names)

  
  1. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']
  2. [ 'Tina', 'Rose', 'May', 'Mary', 'Kobe', 'King', 'Jone', 'Jane', 'James', 'Jack', 'Bill']
  3. [ 'Jack', 'Rose', 'Kobe', 'James', 'Jane', 'King', 'Bill', 'Jone', 'Mary', 'May', 'Tina']

注:关于列表操作的内容,会放到后面for、while循环里具体讨论。


以上便是《Python学习04讲》所有内容,更多python学习请继续关注我的博客——风起怨江南,不定期更新,原创不易,如果喜欢请点赞和关注,谢谢大家的支持!

获得更多免费的学习资料请添加微信公众号——风起怨江南,谢谢大家的关注和支持!


转载:https://blog.csdn.net/JackMengJin/article/details/105440640
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场