前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何理解和使用Python中的列表

如何理解和使用Python中的列表

作者头像
小土豆Yuki
发布2020-06-15 17:36:31
6.9K0
发布2020-06-15 17:36:31
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

今天我们详细讲解Python 中的列表。

前言 序列(sequence)

  • 序列是Python中最基本的一种数据结构 数据结构指计算机中数据存储的方式
  • 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引) 并且序列中的数据会按照添加的顺序来分配索引
  • 序列的分类: 可变序列(序列中的元素可以改变): > 列表(list) 不可变序列(序列中的元素不能改变): > 字符串(str) > 元组(tuple)

Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。

列表简介(list)

列表是Python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、字典以及其他自定义类型的对象。

列表的使用:

1. 列表的创建

2. 操作列表中的数据

列表中的对象都会按照插入的顺序存储到列表中,第一个插入的对象保存到第一个位置,第二个保存到第二个位置。我们可以通过索引(index)来获取列表中的元素。索引是元素在列表中的位置,列表中的每一个元素都有一个索引。索引是从0开始的整数,列表第一个位置索引为0,第二个位置索引为1,第三个位置索引为2,以此类推。

下面我们详细讲解有关列表的操作。

1. 创建列表

1). 创建列表,通过[]来创建列表

代码语言:javascript
复制
my_list = []
print(my_list,type(my_list))

运行结果:

2). 创建一个包含有5个元素的列表

当向列表中添加多个元素时,多个元素之间使用,隔开

代码语言:javascript
复制
my_list = [,,,,]

3). 获取列表中的第1,3 5 个元素

代码语言:javascript
复制
my_list = [10,20,30,40,50]
print(my_list[0], my_list[2], my_list[4])

运行结果:

4). 通过len()函数获取列表的长度,也就是列表中元素的个数。

代码语言:javascript
复制
my_list = [10,20,30,40,50]
print(my_list[0], my_list[2], my_list[4])
print(f'my_list\'s length is {len(my_list)}')

运行结果:

2. 列表切片读取列表内容(切片指从现有列表中,获取一个子列表)

通过切片来获取指定的元素

语法:列表[起始:结束]

通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素

做切片操作时,总会返回一个新的列表,不会影响原来的列表

起始和结束位置的索引都可以省略不写

如果省略结束位置,则会一直截取到最后

如果省略起始位置,则会从第一个元素开始截取

如果起始位置和结束位置全部省略,则相当于创建了一个列表的副本

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print(employees[:])  #运行结果:['Jack', 'Kevin', 'Ray', 'Bin', 'Eva', 'Summer', 'Frank']
print(employees[:])  #运行结果:['Yuki', 'Jack', 'Kevin', 'Ray']
print(employees[:])  #运行结果:['Yuki', 'Jack', 'Kevin', 'Ray', 'Bin', 'Eva', 'Summer', 'Frank']
print(employees[:])  #运行结果:['Jack', 'Kevin'] 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素

运行结果:

语法:列表[起始:结束:步长]

步长表示,每次获取元素的间隔,默认值是1

步长不能是0,但是可以是负数

如果是负数,则会从列表的后部向前边取元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print(employees[::])  #运行结果:['Yuki', 'Kevin', 'Bin']
print(employees[::-1])  #相当于将整个列表翻转显示。运行结果['Frank', 'Summer', 'Eva', 'Bin', 'Ray', 'Kevin', 'Jack', 'Yuki']
print(employees[::-2]) #运行结果:['Frank', 'Eva', 'Ray', 'Jack']

运行结果:

补充:

列表的索引可以是负数。如果索引是负数,则从后向前获取元素,-1表示倒数第一个,-2表示倒数第二个以此类推。

3. 列表的通用操作

  • +可以将两个列表拼接为一个列表
代码语言:javascript
复制
my_list = [1,2,3] + [4,5,6]
print(my_list)

运行结果:

  • * 可以将列表重复指定的次数
代码语言:javascript
复制
my_list = [1,2,3] * 5
print(my_list)

运行结果:

  • in 和 not in

in用来检查指定元素是否存在于列表中

如果存在,返回True,否则返回False

not in用来检查指定元素是否不在列表中

如果不在,返回True,否则返回False

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print('Yuki' in employees)  #True
print('Cendy' not in employees)  ##True
  • len()获取列表中的元素的个数

min() 获取列表中的最小值

max() 获取列表中的最大值

代码语言:javascript
复制
arr = [,,,,,]
print(min(arr) , max(arr))

运行结果:

两个方法(method)index() 和 count()

方法和函数基本上是一样,只不过方法必须通过对象.方法() 的形式调用

s.index() 获取指定元素在列表中的第一次出现时的索引

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank']
print(employees.index('Jack'))

运行结果:

index()的第二个参数,表示查找的起始位置,第三个参数,表示查找的结束位置

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print(employees.index('Jack'))
print(employees.index('Jack',2))

运行结果:

s.count() 统计指定元素在列表中出现的次数

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print(employees.count('Jack')) #'Jack'在employees列表中出现了两次

运行结果:

4. 修改列表中的元素

方法一:直接通过索引来修改元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees[0] = 'Mary'
employees[1] = 'Bunpoat'
print('修改后:',employees)

运行结果:

方法二:通过del来删除元素

del employees[1] 删除索引为1的元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
del employees[]

运行结果:

方法三:通过切片来修改列表

在给切片进行赋值时,只能使用序列

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees[0:2] = ['Mary','Bunpoat'] #修改employees[0]为Mary,employees[1]为Bunpoat
print('修改后:',employees)
employees[0:0] = ['Yuki'] ##向索引为0的位置插入元素'Yuki'
print('修改后:',employees)

运行结果:

方法四:通过切片来删除元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
del employees[:]  #删除employees[0] 和 employees[1]
print('修改后:',employees)

employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
del employees[::]
print('修改后:',employees)

employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees[:] = []
print('修改后:',employees)

运行结果:

注意:以上操作,只适用于可变序列

5. 列表的方法

  • append()

向列表的最后添加一个元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.append('Mary')
print('修改后:',employees)

运行结果:

  • insert()

向列表的指定位置插入一个元素

参数:

1.要插入的位置

2.要插入的元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.insert(,'Mary')
print('修改后:',employees)

运行结果:

  • extend()

使用新的序列来扩展当前序列

需要一个序列作为参数,它会将该序列中的元素添加到当前列表中

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.extend(['Mary','Bunpoat'])
#或是employees += ['Mary','Bunpoat'] 可以达到一样的效果
print('修改后:',employees)

运行结果:

  • clear()

清空序列

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.clear()
print('修改后:',employees)

运行结果:

  • pop()

根据索引删除并返回被删除的元素

代码语言:javascript
复制
#删除指定索引的元素
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.pop(2)  #删除索引为2的元素
print('修改后:',employees)

#删除最后一个元素
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.pop()  #删除最后一个元素
print('修改后:',employees)

运行结果:

  • remove()

删除指定值的元素,如果相同值得元素有多个,只会删除第一个

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.remove('Yuki')
print('修改后:',employees)
employees.remove('Jack')
print('修改后:',employees)

运行结果:

  • reverse()

用来反转列表

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
print('修改前:',employees)
employees.reverse() 
print('修改后:',employees)

运行结果:

  • sort()

用来对列表中的元素进行排序,默认是升序排列

如果需要降序排列,则需要传递一个reverse=True作为参数

代码语言:javascript
复制
my_list = list('asnbdnbasdabd')
print('修改前',my_list)
my_list.sort() ##升序排序
print('修改后',my_list)

my_list = list('asnbdnbasdabd')
print('修改前',my_list)
my_list.sort(reverse=True)  ##降序排序
print('修改后',my_list)

运行结果:

6. 遍历列表

遍历列表,指的就是将列表中的所有元素取出来

方法一:通过while循环来遍历列表

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
i = 
while i < len(employees) :
    print(employees[i])
    i += 

运行结果:

方法二:通过for循环来遍历列表

for循环的代码块会执行多次,序列中有几个元素就会执行几次

每执行一次就会将序列中的一个元素赋值给变量,

所以我们可以通过变量,来获取列表中的元素

代码语言:javascript
复制
employees  = ['Yuki','Jack','Kevin','Ray','Bin','Eva','Summer','Frank','Jack']
for i in employees :
    print(i)

运行结果:

今天我们先介绍到这里。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档