python基础之列表及元组的介绍
列表
1.列表
1.1序列的基本概念
- 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
- 数据结构指计算机中数据存储的方式
1.2列表的分类
- 可变序列(序列中的元素可以改变):例如 列表(list)
- 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
1.3列表(list)
- 列表是Python中的一个可变对象
列表的作用:
- 列表中可以保存多个有序的数据
- 列表是用来存储对象的对象
1.4列表的使用
列表的创建:通过[]来创建一个空列表
- 只要把逗号分隔的不同的数据项使用方括号括起来,即可创建一个非空列表。
list1=[] #空列表
list2=[1,2,3,4] #非空列表
1.5索引(index)
- 列表,元组,中都可以通过元素的位置进行索引(index)
索引的方法:在列表中可通过(index)或者下标来获取列表中的元素(索引从零开始,可以为负数-1为最后一位的元素
list1=[1,2,3,4,5]
print(list1[0]) #取出列表中的第一位元素
1.6切片
- 切片是指从现有列表中获得一个子列表
- 通过切片来获取指定的元素
- 语法: 列表[起始 : 结束 : 步长]
- 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
- 起始位置和结束位置的索引可以不写
- 如果省略结束位置, 则会从当前的开始位置一直截取到最后
- 如果省略开始位置, 则会从第一个元素截取到结束的元素,但是不包括结束的元素
- 如果开始位置和结束位置都省略, 则则会从第一个元素开始截取到最后一个元素
- 步长表示每次获取元素的间隔,默认是1(可以省略不写)
步长不能是0,但可以是是负数
list1=[1,2,3,4,5,6]
1.7通用操作
+和 *
- +可以将两个列表拼接成一个列表
- *可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
in 和 not in
- in用来检查指定元素是否在列表当中
- not in 用来检查指定元素是否不在列表当中
- len() 获取列表中元素的个数
- max() 获取列表中最大值
- min() 获取列表中最小值
- list.index(x[, start[, end]])
- 第一个参数 获取指定元素在列表中的位置
- 第二个参数 表示查找的起始位置
- 第三个参数 表示查找的结束位置
- list.count(x) 统计指定元素在列表中出现的个数
1.8修改列表
- 通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列)
- 当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致
- 通过切片来删除元素
- del list[起始 : 结束]
- list = []
1.9列表的方法
append() 像列表的最后添加一个元素
list1=[1,2,3]
list1.append(4)
print(list1) #输出为list1=[1,2,3,4]insert(arg1,arg2) 像列表指定位置插入一个元素 参数1:要插入的位置 参数2:要插入的元素
list1=[1,2,3,4]
list1.insert(0,9) #语法:list1.insert(索引位置,加入的元素)
print(list1)extend(iterable) 使用一个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递一个序列
list1=[1,2,3,4]
list2=[5,6,7]
llist1.extend(list2) #转递的序列会被加入到当前序列的最后面
print(list1)pop() 根据索引删除并返回指定元素
list1=[1,2,3,4,5,6]
a=list1.pop() #默认删除最后一个元素,也根据索引进行删除
print(‘删除后的列表’,list1)
print(‘被删除的元素’,a)remove() 删除指定元素 (如果相同值的元素有多个,只会删除第一个)
list1=[1,2,3,4]
list1.remove(1) #()内输入需要删除的元素即可
print(list1)reverse() 翻转列表
list1=[1,2,3,4,5]
list1.reverse() #()内不需要加入参数
print(list1)sort(key=None,reverse=False) 用来对列表中的元素进行排序 reverse:True反序;False 正序
list1=[3,5,2,4,1]
list1.sort() #将列表进行正序排列
print(list1)
list1.sort(key=None,reverse=True) #将列表进行反序排列
print(list1)
2.元组
元组简介
- 元组表现形式tuple
- 元组是一个不可变序列(一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表)
- 使用()创建元素
- 元组不是空元组至少有一个 逗号(,) 当元组不是空元组时括号可以省略
- 元组解包指将元组当中的每一个元素都赋值给一个变量
- 有多少元素就需要有多少变量(当元素过多时可在变量前加*,剩余元素会以列表形式出现。如a,b,*c=my_tuple),
- 如果需要中间元素以列表形式出现(a,*b,c=my_tuple 输出结果为a=1,b=[2,3,4],c=5) 其他情况可类推
解包:
my_tuple=1,2 #括号可有可无,当无括号时只有一个元素时它不是元祖。
a,b=my_tuple
print(‘a=’,a)
print(‘b=’,b)my_tuple=1,2,3,4
a,b=my_tuple # ““解包时a取走第一个元素,其他元素会以列表形式给b
print(‘a=’,a) #解包时不能同时用两个*
print(‘b=’,b)
3.小练习
#将列表a=[1,2,3,4,5,6]进行反转
a=[1,2,3,4,5,6]
print(a[::-1])
#猜数字:给用户9次机会,在1-10中随机猜数字,如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。要求用户怎么猜也猜不对。
list1=[1,2,3,4,5,6,7,8,9,10]
for i in range(1,10):
num=int(input('请输入数字:'))
if 1<=num<=10:
if num in list1:
list1.remove(num)
print('猜错了')
continue
else:
print('输入错误')
else:
print(f'正确答案是{list1[0]}')
#有两个列表list1=[11,22,33],list2=[22,33,44]获取内容相同的元素
list1=[11,22,33]
list2=[22,33,44]
list3=[]
for i in list1:
for j in list2:
if i==j:
list3.append(i)
print(list3)
#现有8位老师,三个办公室,要求8位随机分配到三个教室。
teachers=['a','b','c','d','e','f','g','h']
offices=[[],[],[]]
import random
for i in teachers:
offices[random.randint(0,2)].append(i)
print(offices)
还没有评论,来说两句吧...