Python 基础之列表
文章目录
- 一、 序列类型
- 序列类型的通用操作符和函数(12个)
- 二、列表(list)
- 列表常用函数或方法
- 列表增加
- 列表删除
- 列表更新/更改
- 列表升序/降序
- 三、列表应用实例
- 模拟用户登录系统
- 班级成绩排序
- 元素移位
一、 序列类型
序列类型是一维元素向量,元素之间存在先后顺序的关系,通过序号访问。
字符串(str)、元组(tuple)、列表(list)都属于序列类型
序列类型的通用操作符和函数(12个)| 操作符 | 描述 |
|---|---|
| x in s | 如果x是s的元素,返回Ture,否则返回False |
| x not in s | 如果x不是是s的元素,返回Ture,否则返回False |
| s+t | 连接s和t |
| n*s | 将序列s复制n次 |
| s[i] | 索引,返回序列的第i个元素 |
| s[i:j] | 分片,返回包含序列s的第i到第j个元素的子序列(不包含第j个元素) |
| s[i:j:k] | 步骤分片,返回包含序列s第i到第j个元素以k为步数的子序列 |
| len(s) | 序列s的元素个数(长度) |
| min(s) | 序列s中的最小元素 |
| max(s) | 序列s中的最大元素 |
| s.index(x[,i[,j]]) | 序列s中从i开始到j位置中第一次数显元素x的位置 |
| s.count(x) | 序列s中出现x的总次数 |
列表(list)是包含0个或多个对象应用的有序序列,属于序列类型,列表的长度和内容都是可变的,可以自由对列表的数据项进行增删改查替换等,列表的长度没有限制,元素类型可以不同,使用非常灵活。
列表用中括号[]表示,也可以通过list()函数将元组或字符串转化成列表,直接使用list()函数会返回一个空列表。
x=["张三","李四",["hello",1,2],3,4]
print(x[2])
print(x[2][0])
print(x[2][0][1]) #列表数据操作类似数组操作
print(list("张三李四")) #将字符串转化成列表
print(list()) #返回空列表
x[0]="python" #列表数据赋值
print(x)
-----------------------------------------------------
输出结果:
['hello', 1, 2]
hello
e
['张', '三', '李', '四']
[]
['python', '李四', ['hello', 1, 2], 3, 4]
列表常用函数或方法
列表增加
| 函数或方法 | 描述 |
|---|---|
| ls.extend(lt) | 将列表lt元素增加到列表ls中,即将其他列表中的完整内容,追加到当前列表的末尾 |
| ls.append(x) | 将列表ls最后增加一个元素x,即列表末尾追加数据 |
| ls.insert(i,x) | 将列表ls的第i位置增加元素x,即在列表的指定索引位置插入数据 |
x=["张三","李四",["hello",1,2],3,4]
print(x)
x.append("apple") #在末尾处增加"apple"元素
print(x)
x.insert(1,"apple") #在索引位置1处,增加“apple”元素
print(x)
y=[1,5.20,13.14]
x.extend(y) # 在末尾处增加另外一个列表内容
print(x)
----------------------------------------------------
输出结果:
['张三', '李四', ['hello', 1, 2], 3, 4]
['张三', '李四', ['hello', 1, 2], 3, 4, 'apple']
['张三', 'apple', '李四', ['hello', 1, 2], 3, 4, 'apple']
['张三', 'apple', '李四', ['hello', 1, 2], 3, 4, 'apple', 1, 5.2, 13.14]
列表删除
| 函数或方法 | 描述 |
|---|---|
| ls.clear() | 删除ls所有元素,即清空整个列表 |
| ls.pop() | 删除列表中最后一个元素 |
| ls.pop(i) | 将列表ls中的第i项元素去除并删除该元素,即删除指定索引的数据 |
| ls.remove(x) | 删除列表中出现的第一个指定元素x |
| del ls[i:j] | 删除列表ls第i到第j项数据,等价于ls[i:j]=[] |
x=["张三","李四",["hello",1,2],"李四",4,5]
print(x)
x.pop() #删除列表末尾最后一个元素
print(x)
x.pop(0) #删除指定索引位置的元素
print(x)
del x[1:3] # 删除指定索引位置的子元素
print(x)
x.remove("李四") #删除第一次出现的指定元素
print(x)
x.clear() #清除整个列表,变成空列表
print(x)
-------------------------------------------
输出结果:
['张三', '李四', ['hello', 1, 2], '李四', 4, 5]
['张三', '李四', ['hello', 1, 2], '李四', 4]
['李四', ['hello', 1, 2], '李四', 4]
['李四', 4]
[4]
[]
del 关键字本质上是用来将一个变量从内存中删除
注意:如果使用del关键字将变量从内存中删除,后续的代码就不能再使用这个变量了
| 函数或方法 | 描述 |
|---|---|
| ls[i]=x | 替换列表ls第i项元素为x |
| ls[i:j]=lt | 用列表lt替换列表ls中第i到第j项数据(不含第j项) |
| ls[i:j:k]=lt | 用列表lt替换列表ls中第i到第j项以k为步数的数据 |
x=["张三","李四",["hello",1,2],3,4] x[0]="python" #列表数据赋值 print(x) ----------------------------------------------------- 输出结果: ['python', '李四', ['hello', 1, 2], 3, 4]列表升序/降序
| 函数或方法 | 描述 |
|---|---|
| ls.sort() | 按从小到大升序 |
| ls.sort(severse=True) | 按从大到小降序 |
| ls.reverse() | 将列表ls中的元素反转 |
x=[1,4,3,5,10,7] x.reverse() #反转 print(x) x.sort() #升序 print(x) x.sort(reverse=True) #降序 print(x) ---------------------------------------- 输出结果: [7, 10, 5, 3, 4, 1] [1, 3, 4, 5, 7, 10] [10, 7, 5, 4, 3, 1]三、列表应用实例 模拟用户登录系统
实现如下功能:
(1)系统数据库里面有用户和密码。
例如users = [‘redhat’,‘root’] passwds = [‘123’,‘456’]
(2)用户只有3次机会登陆(判断用户登陆是否成功)
user=["radhat","root"]
password=["123","456"]
for i in range(3):
u=input("请输入用户名:")
if u==user[0]or u==user[1]:
p=input("请输入密码")
if (p==password[0] and u==user[0]) or (p==password[1] and u==user[1]):
print("登录成功")
break
else:
print("密码错误")
else:
print("用户名错误")
else:
print("3次机会已用完,请重新再试")
------------------------------------------------------------------------------
请输入用户名:radhat
请输入密码abc
密码错误
请输入用户名:radhat
请输入密码456
密码错误
请输入用户名:rathat
用户名错误
3次机会已用完,请重新再试
班级成绩排序
产生一个列表,其中有40个元素,每个元素是50到100的一个随机数,如果这个列表中的数据代表着某个班级40人的分数,请计算成绩低于平均分的学生人数,对前面的列表元素做降序排序。
(1)产生一个列表,随机40个元素
(2)统计低于平均分的学生人数
(3)将成绩降序排序
import random
score=[]
count=0
for i in range(40):
score.append(random.randint(50,100)) #产生40个随机元素,逐个追加到列表的后面
for j in score:
if j
元素移位
有一个列表,其中包括10个元素,这些元素是10-100之间随机数,要求将这个列表中的每一个元素一次向前移动一个位置,第一个元素移到列表的后面,输出这样的列表
import random
ls=[]
for i in range(10):
ls.append(random.randint(10,100))
print("原来的列表:{}".format(ls))
a=ls.pop(0)
ls.append(a)
print("移位后的列表:{}".format(ls))
-----------------------------------------------------------------
输出结果:
原来的列表:[72, 38, 67, 44, 15, 14, 25, 71, 54, 27]
移位后的列表:[38, 67, 44, 15, 14, 25, 71, 54, 27, 72]



