Python教程——列表及其操作
Python教程——列表及其操作
本章介绍有关列表的介绍,及其特性,并涵盖了遍历列表以及有关for循环、元组的使用
列表简介
- 列表是按特定顺序排列的元素,可以拥有不同的数据类型
- 使用方括号([ ])来表示列表,且用逗号( , )来分割其中的每一个元素
如何获取列表中的数据?
因为列表是有序数组,因此仅需访问其元素的位置即可访问数据
foods = ['noodles','hamburger','rice']
print(foods[1]) #hamburger
print(foods[-1]) #rice
需要注意的是
1.列表的索引是从0开始的,而不是1;
2.为了在不知道列表长度的情况下访问列表的最后一个数据,可采用-1来进行访问,同理,-2即可访问列表中的倒数第二个元素
3.在数组的数据提取后,可以看作是一个变量使用,因此在输出列表中的数字时,还是需要str()进行转化
列表的增删改
方法 | 参数 | 作用 |
---|---|---|
append( ) | 需要添加的元素 | 添加新的元素到列表末尾 |
insert( ) | 所加元素的位置、需要添加的新元素 | 在特定位置上添加新的元素 |
pop( ) | 无 | 可将列表中最后一个值弹出 |
pop( ) | 列表中所要删去的元素的位置 | 弹出列表中的任何位置的元素 |
remove( ) | 所要删去的元素 | 删去第一个指定的元素 |
向列表增加新的元素
- 在列表末尾添加元素:
foods = ['noodles','hamburger','rice']
foods.append('cake') #foods = ['noodles','hamburger','rice','cake']
print(foods[-1]) #cake
以上展示在foods的末尾添加了一个cake的元素,然后输出最后一位即cake。可见append可以在末尾添加元素
- 在列表中间插入元素:
foods = ['noodles','hamburger','rice']
foods.insert(0,'cake') #foods = ['cake','noodles','hamburger','rice']
print(foods[0]) #cake
print(foods[1]) #noodles
在foods的第0个位置添加cake元素,其余元素都右移一个位置
在列表中删除元素
- 直接弹出栈顶元素
foods = ['noodles','hamburger','rice']
food = foods.pop()
print(foods) #['noodles','hamburger']
print(food) #rice
将foods中的rice弹出,赋值给food,原列表的末尾的元素变为hamburger,表示对列表操作成功,而food在输出得到rice表示food弹出接收成功
列表就像一个栈,列表的末尾的元素相当于栈顶元素,而我们在使用append、pop相当于对栈堆的操作
- 弹出列表中的任何位置的元素
foods = ['noodles','hamburger','rice']
food = foods.pop(1)
print(foods) #['noodles','rice']
print(food) #hamburger
与弹出栈顶元素相类似,在pop中加入位置参数,能弹出有序列表中对应位置的元素
- 删除已知元素
foods = ['noodles','hamburger','rice','hamburger']
food = foods.remove('hamburger')
print(foods) #['noodles','rice','hamburger']
找到foods列表中的hamburger并删去,注意,列表中若有重复的元素,只能删去第一个
- 永久删除某元素
foods = ['noodles','hamburger','rice','hamburger']
del foods[-1]
print(foods) #['noodles', 'hamburger', 'rice']
如果知道需要删去的元素的位置,且不必要再使用该数据,可以通过del直接进行删除
修改列表中元素的值
foods = ['noodles','hamburger','rice']
foods[0] = 'cake'
print(foods) #['cake','hamburger','rice']
指定foods中的第一个元素,直接通过赋值的方法进行修改
组织列表
方法/函数 | 参数 | 作用 |
---|---|---|
sort( ) | reverse=True(反向排序,默认为false) | 对列表进行永久性排序 |
sorted( ) | reverse=True(反向排序,默认为false) | 对列表进行临时排序 |
reverse( ) | 无 | 反向列表数据 |
len( ) | 无 | 得到列表长度 |
对列表进行永久性排序
foods = ['noodles','hamburger','rice']
foods.sort()
print(foods) #['hamburger', 'noodles', 'rice']
foods.sort(reverse=True)
print(foods) #['rice', 'noodles', 'hamburger']
以上对foods中的元素进行永久性排序,顺序一旦改变,无法复原,reverse定义为True时,可以进行反向排序
对列表进行临时排序
foods = ['noodles','hamburger','rice']
print(sorted(foods)) #['hamburger', 'noodles', 'rice']
print(foods) #['noodles', 'hamburger', 'rice']
print(sorted(foods,reverse=True)) #['rice', 'noodles', 'hamburger']
sorted()函数与sort()方法在使用上有较大不同,而sorted( )使用后赋值给一个新的变量也可以实现永久排序,因此其可用性较高
对列表进行反向
foods = ['noodles','hamburger','rice']
foods.reverse()
print(foods) #['rice', 'hamburger', 'noodles']
reverse()方法是对原列表进行反向输出,并不需要进行排序
生成列表长度
foods = ['noodles','hamburger','rice']
len(foods) #3
通过len()函数可以快速获取列表的长度
操作列表
通过For循环遍历列表
- 在一个列表中含有相同类型的数据,因此我们往往需要对其进行类似的操作,这就需要我们会使用循环遍历列表
- 我们可以使用for循环列表进行遍历操作
foods = ['noodles','hamburger','rice']
for food in foods:
print(food +' is delicious!\n')
#noodles is delicious!
#hamburger is delicious!
#rice is delicious!
- For循环将每个foods列表分别赋值给food并执行for循环内部的语句中
- For循环不同于其他代码,Python中的For循环不需要结束语句,而在Python中,通过语句缩进来控制代码块,使得Python的代码更加轻便
- food虽然在for循环中,但是其所占据的内存空间却在全局,因此,即使弹出循环了,我们依旧可以调用food,且其值是我们最后一次调用的值。
- for的代码块最需要注意的是在for行上末尾的分号(:)以及代码块内部的缩进
创建数字列表
- Python为了更高效的生成数字列表,提供了range()函数可以快速生成一系列数字
for value in range(1,6):
print(value)
#1
#2
#3
#4
#5
print(list(range(1,6))) #[1,2,3,4,5]
print(list(range(2,11,2))) #[2,4,6,8,10]
- 在for循环中,将每个值分别赋给value,并进行输出,我们也可以将range(1,6)直接转化为列表输出
- range()函数中,第一位表示数字起始的位置,第二位表示列表的数字末尾小于该数,第三位表示相邻两数之间的差,称之为步长
当我们使用range函数时,有时需要对其进行加1或减1才能达到预期的效果
数字列表简单的统计运算
函数 | 作用 |
---|---|
min | 返回列表中的最小值 |
max | 返回列表中的最大值 |
sum | 返回列表所有元素的和 |
对于很长的列表也同样适用
列表的操作的简写
num_s = []
for value in range(1,11):
num_ = value**2
num_s.append(num_)
print(num_s) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
num_s = [value**2 for value in range(1,11)]
print(num_s) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
上方的代码是输出1~10中的数字平方组成的列表,下方是其相对的简写代码,代码的简约能提高代码的阅读效率
切片
什么是切片?
- 我们需要使用一小段的列表时,需要处理列表的部分元素,通过切片来进行提取
foods = ['noodles','hamburger','rice','cake','noodles']
print(foods[0:3]) #['noodles','hamburger','rice']
print(foods[:4]) #['noodles','hamburger','rice','cake']
print(foods[2:]) #['rice','cake','noodles']
print(foods[-3:]) #['rice','cake','noodles']
for food in foods[-2:]:
print(food)
#cake
#noodles
foodss = foods
foodss[0] = 'rice'
print(foods) #['cake','hamburger','rice','cake','noodles']
foodss = foods[:]
foodss[0] = 'rice'
print(foods) #['noodles','hamburger','rice','cake','noodles']
print(foodss) #['cake','hamburger','rice','cake','noodles']
- 第一段代码表示了切片的用法,同数字列表类似,都是从第一位数开始,且需要小于第二位数,而在位置未加数时,需要从开始,或者最后开始
- 第二段代码展示了切片之后也是列表
- 第三段代码表示,列表在切片后赋给新变量,但是其与原来的列表还是相关联的,因此列表的切片是类似于指针的
- 第四段代码表示切片后的代码复制给一个新的列表中
元组
- 在数据类型中有const表示的是不可变的数,而相对于列表,也有不能变动的列表,称为元组
- 元组中的任一数据都不能改动,而列表的数据在运行期间可能变化
- 遍历元组的方式与遍历列表的方式相同
列表 | 元组 |
---|---|
数据可变 | 数据不可变 |
方括号包裹数据 | 圆括号包裹数据 |
修改元组变量
- 不能修改元组内部的数据,直接将元组重新赋值即可
本文地址:https://blog.csdn.net/weixin_46139709/article/details/107172073
上一篇: 详解React路由传参方法汇总记录
下一篇: C++ sort排序之降序、升序使用总结