首页 > 编程语言 >初始Python篇(3)—— 列表

初始Python篇(3)—— 列表

时间:2024-10-16 23:19:02浏览次数:9  
标签:Python 元素 list 列表 print 排序 Hello 初始

 找往期文章包括但不限于本期文章中不懂的知识点:

个人主页:我要学编程(ಥ_ಥ)-CSDN博客

所属专栏: Python

目录

列表相关概念 

列表的创建与删除

列表的遍历

操作列表的相关方法 

列表的排序 

列表生成式

二维列表 

创建二维列表

遍历二维列表

列表生成式


列表相关概念 

定义:是指一系列的按特定顺序排列的元素组成。是Python中内置的可变序列,与我们前面学习的字符串不同,字符串是不可变序列,但是两者都是属于序列的,因此操作序列的方法和操作符都是可以用来操作列表的。

在Python中使用 [ ] 定义列表,元素与元素之间使用英文的逗号分隔,列表中的元素可以是任意的数据类型(包括列表本身)。

列表的创建与删除

列表有两种创建方式:1、使用 [ ] 直接创建列表;2、使用内置函数 list() 创建列表。

# 列表的创建
# 方式一:使用 []
list1 = [1,2,3,'Hello','World'] # 其中的元素可以是不同的类型
# 方式二:使用内置函数list()
list2 = list('Hello')

print(list1) # 输出为 [1, 2, 3, 'Hello', 'World']
print(list2) # 输出为 ['H', 'e', 'l', 'l', 'o']

注意:当我们使用 [ ] 去创建列表时,用 逗号 分隔的才是元素;而我们去使用内置函数 list() 去创建列表时,其参数只能是 可迭代对象类型(不传参的话,就是空列表)。在 Python 中,可迭代对象类型是指可以一次返回一个元素的对象。可迭代对象实现了__iter__()方法,这个方法返回一个迭代器对象。 目前,我们学习的可迭代数据类型只有字符串和列表。如果想要列表中的元素是 int 等基本数据类型的话,只能通过 range 方法来实现。

for i in range(1, 10, 2): # 起始位置为1,结束位置为9,步长为2
    print(i, end=' ') # 1 3 5 7 9

删除列表:通过 del 关键字来删除。

del  列表名

列表名对应的列表被删除了之后,就不能再使用该列表了。 

前面说了列表也属于序列的一种,即序列的相关操作列表也是可以用的。演示一下,切片操作:

# 从1开始,到2结束,步长默认为1
print(list2[1:3]) # 输出 ['e', 'l']

注意:切片操作只是在原来大范围的数据,进行一定的复制,变成了小范围的数据,但是其数据类型并未发生变化。

列表的遍历

总共有三种常见的遍历方式:

1、使用for循环:

list = list('Hello')
for i in list: # 将列表中的元素赋值给 i 
    print(i,end=' ') # 输出 H e l l o 

2、使用for循环+range索引:

list = list('Hello')
for i in range(0, len(list)):
    print(list[i],end=' ') # 输出 H e l l o

3、使用 enumerate 函数:

语法结构:

for index, item in enumerate(list):
    print(index, item)

# index 是序号,不是索引。序号可以手动设置起始位置,索引是不变的
# item 是列表的元素
list = list('Hello')
for index,item in enumerate(list):
    print(index, item) 
# 输出 0 H
#     1 e
#     2 l
#     3 l
#     4 o

我们还可以手动地去修改序号的起始位置:

list = list('Hello')
for index,item in enumerate(list, start=2): # "start=" 也是可以省略的
    print(index, item)
# 输出 2 H
#     3 e
#     4 l
#     5 l
#     6 o

操作列表的相关方法 

我们知道了列表是属于可变的数据类型,那么其就支持增删改查的操作。

列表的方法描述说明
Iist.append(x)在列表最后增加一个元素
Iist.insert(index,x)在列表中第index位置增加一个元素
Iist.clear()清除列表中所有元素
Iist.pop(index)将列表中第index位置的元素取出,并从列表中将其删除
Iist.remove(x)将列表中出现的第一个元素x删除
Iist.reverse(x)将列表中的元素反转
Iist.copy()拷贝列表中的所元素,生成一个新的列表

方法演示: 

list = ['Hello', 'World']
print(list) # 输出为 ['Hello', 'World']
# 增加元素
list.append('Python')
print(list) # 输出为 ['Hello', 'World', 'Python']

# 在列表的1位置插入元素
list.insert(1,'Java')
print(list) # 输出为 ['Hello', 'Java', 'World', 'Python']

# 将列表中第1个元素取出,并删除
pop = list.pop(1)
print(pop) # 输出为 Java
print(list) # 输出为 ['Hello', 'World', 'Python']

# 将列表中出现的第一个"World"删除
remove = list.remove('World')
print(remove) # 输出为 None --> 这里可以看出和pop方法的区别了
print(list) # 输出为 ['Hello', 'Python']

#  将列表的元素进行反转
list.reverse()
print(list) # 输出为 ['Python', 'Hello'] --> 是对元素位置反转,而不会对元素进行内部修改

# 拷贝原列表
copy_list = list.copy()
print(copy_list) # 输出为 ['Python', 'Hello']

# 清空列表
list.clear()
print(list) # 输出为 [] --> 空列表

利用上面的方法进行修改对应位置的元素,只能是先插入一个新的元素,再删除一个旧元素或者反过来做。在列表中访问一个元素的方法是通过 [ ] 来访问的。

list = ['Hello', 'World']
print(list) # 输出为 ['Hello', 'World']
list[1] = 'Python'
print(list) # 输出为 ['Hello', 'Python']

列表的排序 

我们可以对列表中的元素进行排序。

语法:

# 方式一:通过sort方法
list.sort(key=None, reverse=False)

# key 表示的要排序的规则,None表示是默认的规则
# None在Python中和C语言中的NULL含义是差不多的,但是None也是一个对象
# reverse=False 表示默认按照升序的规则排序,如果设置为True的话,就是降序

# 方式二:通过内置的sorted函数
sorted(iterable, key=None, reverse=False)

# iterable 表示的是要排序的对象,这个对象是可迭代的对象
# 剩下的两个和上面的含义是一样

对于 整数、浮点数这些,排序的规则默认是 根据数字的大小进行比较;对于 英文单词 是通过ASCII码值大小进行比较的。而汉字的比较是 按照 字符的编码值进行比较的。例如,在Unicode编码中,汉字按照一定的编码顺序排列,排序时会依次比较每个字符的编码值大小。这里了解即可。

代码实现:

# 对数字进行排序
list = [1,100,2,200]
print('排序前:',list) # 输出为 排序前: [1, 100, 2, 200]
list.sort() # 默认的规则,默认是升序
print('排序后:',list) # 输出为 排序后: [1, 2, 100, 200]

# 对英文单词进行排序
list = ['Hello', 'World', 'java', 'mysql','OS']
print('排序前:',list) # 输出为 排序前: ['Hello', 'World', 'java', 'mysql', 'OS']
list.sort() # 默认的规则,默认是升序
print('排序后:',list) # 排序后: ['Hello', 'OS', 'World', 'java', 'mysql']

# 对汉字进行排序
list = ['我','要','学','编','程']
print('排序前:',list) # 输出为 排序前: ['我', '要', '学', '编', '程']
list.sort() # 默认的规则,默认是升序
print('排序后:',list) # 排序后: ['学', '我', '程', '编', '要']

# 对三者进行混合排序
list = ['编','程','python','Java',100,3]
print('排序前:',list) # 输出为 排序前: ['我', '要', '学', '编', '程']
list.sort() # 因为这里同时存在整数类型和字符串类型的元素,无法进行比较排序,所以会报错
print('排序后:',list)

注意:在ASCII码中,大写的英文字母比与之对应的小写的英文字母小上32。 

我们可以将排序规则进行修改。例如,在比较排序英文单词时,可以先将英文单词全部转换为大写或者小写,这样就可以实现忽略大小的比较了。

代码实现:

# 忽略大小写比较排序
list = ['Hello', 'World', 'java', 'mysql','OS']
print('排序前:',list) # 输出为 排序前: ['Hello', 'World', 'java', 'mysql', 'OS']

list.sort(key=str.lower) # 忽略大小写比较,默认是升序
print('排序后:',list) # 输出为 排序后:['Hello', 'java', 'mysql', 'OS', 'World']

list.sort(key=str.upper,reverse=True) # 忽略大小写比较,降序排序
print('排序后:',list) # 输出为 排序后:['World', 'OS', 'mysql', 'java', 'Hello']

 注意:这里忽略大小写比较,既可以是按照大写,也可以按照小写的规则来。

上面就是方式一的排序演示,下面我们来看方式二。

list = [1,100,2,200]
asc_list = sorted(list) # 默认的排序规则,默认是升序
print('原列表:',list) # 输出为 原列表: [1, 100, 2, 200]
print('新列表:',asc_list) # 输出为 新列表: [1, 2, 100, 200]

注意:sorted函数是在新列表的基础上进行排序的,而原列表是不会被修改的。其余的与上述第一种排序方式是一样的,这里我们就不再进行演示了。

列表生成式

前面的创建的列表,我们都是通过手动的方式写填充元素的。 而现在我们可以通过列表生成式往列表中填充元素。

语法:

# 方式一:
list = [item for item in range(a,b)]
# 列表中的元素就是item

# 方式二:
list = [item for item in range(a,b) if condition]
# 列表中的元素依然是item,但是其必须满足if语句中的条件 

 代码实现:

# 列表生成式
list = [item for item in range(1,11)] # 列表中是[1,10]的元素
print(list) # 输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 列表中是[1,9]之间,偶数的乘积 
list = [item*item for item in range(1,10) if item % 2 == 0] 
print(list) # 输出为 [4, 16, 36, 64]

 我们还可以使用列表生成式来生成 [1,100] 之间的随机数。

list = [random.randint(1,100) for i in range(10)] # 只是循环10次而已
print(list)

并且当for循环中的变量没有用到时,这个变量是可以写成 "_" 的。 

二维列表 

上面的列表都是一维列表,和我们在C语言中学习的数组一样,列表也是可以有很多维的。

创建二维列表

创建二维列表,其实就是在一个一维列表里面,嵌套了很多个一维列表。即二维列表中的元素是一维列表。

语法:

list = [
    [],
    []
    ......
    []
]

 代码实现:

# 二维列表
list = [
    ['name', 'age', 'gender'],
    ['张三', 19, '男'],
    ['小玉', 20, '女'],
    ['老爹', 58, '男']
]
print(list)

遍历二维列表

遍历二维列表的话,我们是要用双层for循环的。

# 遍历二维列表
list = [
    ['姓名','年龄','性别'],
    ['张三', 19, '男'],
    ['小玉', 20, '女'],
    ['老爹', 58, '男']
]
# 第一种遍历方式
for row in range(0,len(list)):
    for col in range(0, len(list[row])):
        print(list[row][col],end='  ')
    print()

# 第二种遍历方式
for row in list:
    for col in row:
        print(col,end='  ')
    print()

第一种遍历方式,就类似于C语言中的遍历数组的方式:使用下标来遍历。而第二种遍历方式更适合于Python的遍历方式。 

列表生成式

语法:

# 循环x次,每次都生成一个列表,其内的元素是[a,b)
list = [[i for i in range(a,b)] for in range(x)]

代码实现:

# 列表生成式:生成二维列表
list = [[i for i in range(1,6)] for _ in range(3)]
for row in list:
    for col in row:
        print(col,end='\t')
    print()

这个代码可以这样解读:因为二维列表中的元素是一维列表,因此我们可以直接循环3次,每次都生成一个一维列表,再在一维列表中使用列表生成式,创建一维列表即可。

好啦!本期 初始Python篇(3)—— 列表 的学习之旅就到此结束啦!我们下一期再一起学习吧!

标签:Python,元素,list,列表,print,排序,Hello,初始
From: https://blog.csdn.net/2301_80854132/article/details/142901688

相关文章

  • Python基础07_推导式&函数
    目录一、推导式1、列表推导式2、字典推导式3、集合推导式4、元组推导式二、函数1、定义函数1.1def语句1.2函数的调用1.3return语句2、函数参数3、返回值4、匿名函数5、变量作用域6、函数的内存分配7、函数自调用(递归)一、推导式 Python推导式是一种独......
  • Python--WinError 2 的常见解决方案
    报错信息:FileNotFoundError:[WinError2]系统找不到指定的文件。这个错误提示FileNotFoundError:[WinError2]系统找不到指定的文件说明在调用subprocess.Popen时,系统找不到指定的文件或可执行程序。在代码中,这个问题主要是因为找不到JavaJAR文件meteor-1.5.jar,也......
  • 云天社区管理平台---项目初始化
    云天社区管理平台---项目初始化环境配置准备工作创建项目项目结构四、运行和调试正式开发创建项目预览项目修改布局效果展示环境配置准备工作安装HUAWEIDevEcoStudioDevEcoStudio是基于IntelliJIDEACommunity开源版本打造,为运行在HarmonyOS和OpenHarmony......
  • 【deepin23】python 与 julia环境搭建
    基于deepin23操作系统deepin23操作系统自带python3.12软件,但是没有pip程序。可以自行安装pip程序打开终端更新apt库sudoaptupdatesudoaptupgrade安装pip工具sudoaptinstallpython-pippipconfigsetglobal.index-urlhttps://mirrors.ali......
  • python+flask框架的安卓 医院信息管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在当前信息化快速发展的时代,医院信息管理系统作为提升医疗服务质量和效率的重要手段,已成为国内外医疗机构普遍关注的焦点。现有研究主要集......
  • python+flask框架的安卓平台下的餐厅点餐系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在当今信息化快速发展的时代,智能手机和平板电脑等移动设备已广泛普及,移动应用开发成为各行各业数字化转型的重要推手。特别是在餐饮行业,随......
  • 设计思想py 前置后置处理python脚本
    fromflaskimportFlask,request,jsonifyimportjsonapp=Flask(__name__)#用于存储前置和后置脚本pre_script='''defpre_process(data):#在这里编写你的前置处理逻辑returndata'''post_script='''defpost_process(response):......
  • 如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者群有个叫【麦当】的粉丝问了一个关于Python如何把一个python列表(有很多个元素)变成一个excel表格的第一列的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里给出【dcpeng】和【德善堂小儿推拿-瑜亮老师】大佬......
  • C语言基础分享-初始C语言
    1.1什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的国际标准:ANSICC89C90C99C11...其中C89C90为主流C语言是一门面向过程的计算机编程语言。C语言是编译型语言。编译器主要有Clang、GCC、WIN-TC、MSVC、TurboC等。1.2第一个C语言程序点击查......
  • Python应用指南:利用高德地图API获取公交可达圈
    参考文章:城市公交可达圈绘制方法(一)-知乎(zhihu.com)本篇文章我们聚焦于通过公共交通出行方式(包括公交、地铁、公交+地铁的组合)来获取一定时间内可以到达的范围。为了实现这一目标,我们将使用高德地图API中的公交到达圈功能,对城市某一点的公交可达圈进行详细分析。通过这一......