序列(sequence)
基本概念
序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
序列的分类
可变序列(序列中的元素可以改变):例如 列表(list) 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
列表(list)
列表是Python中的一个对象 列表的作用
列表中可以保存多个有序的数据 列表是用来存储对象的对象
列表的使用
列表的创建:通过[]来创建一个空列表 通过 切片 来获取指定的元素
起始位置和结束位置的索引可以不写 如果省略结束位置, 则会从当前的开始位置一直截取到最后 如果省略开始位置, 则会从第一个元素截取到结束的元素,但是不包括结束的元素 如果开始位置和结束位置都省略, 则则会从第一个元素开始截取到最后一个元素
步长表示每次获取元素的间隔,默认是1(可以省略不写) 步长不能是0,但可以是是负数 li = [ 'b' , 'a' , 'c' , 's' , 'a' ]
li1 = li[ 0 : 2 : 1 ]
print ( li1)
>> > [ 'b' , 'a' ]
通用操作
+ 和 *li = [ '1' , '2' , '3' ]
li1 = [ 1 , 2 , 3 , 4 ]
li2 = li + li1
li3 = li * 2
print ( li2)
>> > [ '1' , '2' , '3' , 1 , 2 , 3 , 4 ]
print ( li3)
>> > [ '1' , '2' , '3' , '1' , '2' , '3' ]
in 和 not in in用来检查指定元素是否在列表当中li = [ 'b' , 'a' , 'c' , 's' ]
print ( 'b' in li)
>> > True
not in 用来检查指定元素是否不在列表当中li = [ 'b' , 'a' , 'c' , 's' ]
print ( 'b' not in li)
>> > False
len() 获取列表中元素的个数 max() 获取列表中最大值 min() 获取列表中最小值 list.index(x[, start[, end]])
第一个参数 获取指定元素在列表中的位置 第二个参数 表示查找的起始位置 第三个参数 表示查找的结束位置 li = [ '1' , '2' , '3' , '4' ]
print ( li. index( '1' , 0 , 2 ) )
>> > 0
list.count(x) 统计指定元素在列表中出现的个数li = [ '1' , '2' , '3' , '2' ]
print ( li. count( '2' ) )
>> > 2
修改列表
通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列)li = [ 1 , 2 , 3 ]
li[ 1 ] = 4
print ( li)
>> > [ 1 , 4 , 3 ]
当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致 通过切片来删除元素
del list[起始 : 结束] list = [] li = [ '1' , '2' , '3' ]
del li[ 1 ]
print ( li)
>> > [ '1' , '3' ]
列表的方法
append() 列表的最后添加li = [ 1 , 2 , 3 ]
li. append( 4 )
print ( li)
>> > [ 1 , 2 , 3 , 4 ]
insert(arg1,arg2) 像列表指定位置插入一个元素 参数1:要插入的位置 参数2:要插入的元素li = [ 1 , 2 , 3 ]
li. insert( 1 , 1 )
print ( li)
>> > [ 1 , 1 , 2 , 3 ]
extend(iterable) 使用一个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递一个序列 pop() 根据索引删除并返回指定元素li = [ '1' , '2' , '3' ]
li1 = li. pop( )
print ( li1)
print ( li)
>> > 3
[ '1' , '2' ]
remove() 删除指定元素 (如果相同值的元素有多个,只会删除第一个)li = [ '1' , '2' , '3' ]
li. remove( '3' )
print ( li)
>> > [ '1' , '2' ]
reverse() 翻转列表.li = [ 'b' , 'a' , 'c' , 's' ]
li. reverse( )
print ( li)
>> > [ 's' , 'c' , 'a' , 'b' ]
sort(key=None,reverse=False) 用来对列表中的元素进行排序 reverse:True反序;False 正序li = [ 'b' , 'a' , 'c' , 's' ]
li. sort( )
li1. sort( reverse= True )
print ( li)
print ( li1)
>> > [ 'a' , 'b' , 'c' , 's' ]
[ 's' , 'c' , 'b' , 'a' ]
sorted()对列表进行临时排序
函数sorted()让你能够按特定顺序显示列表元素,同时不影响他们在列表中的原始排列顺序
作业
现在有 a = [1,2,3,4,5,6] 用多种方式实现列表的反转([6,5,4,3,2,1]) 并写出推导过程
利用sort(reverse=True)进行逆序 a = [ 1 , 2 , 3 , 4 , 5 , 6 ]
a. sort( reverse= True )
print ( a)
运用reverse()翻转列表 a = [ 1 , 2 , 3 , 4 , 5 , 6 ]
a. reverse( )
print ( a)
用切片进行反转 a = [ 1 , 2 , 3 , 4 , 5 , 6 ]
a = a[ : : - 1 ]
print ( a)
利用insert方法用for循环进行反转 a = [ 1 , 2 , 3 , 4 , 5 , 6 ]
b = [ ]
for i in a:
b. insert( 0 , i)
a = b
print ( a)
给 用户9次机会 猜1 - 10 个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对
import random
b = 0
while b < 9 :
a = int ( input ( '请输入1-10其中一个数字' ) )
c = random. randint( 1 , 10 )
while a == c:
c = random. randint( 1 , 10 )
continue
else :
print ( '随机数字{0},你猜错了,还有{1}次机会' . format ( c, 8 - b) )
b += 1
有两个列表 lst1 = [11, 22, 33] 和 lst2 = [22, 33, 44]获取内容相同的元素 用for循环其中一个列表 再用in判断是否在宁一个列表中 存在即输出lst1 = [ 11 , 22 , 33 ]
lst2 = [ 22 , 33 , 44 ]
for i in lst1:
if i in lst2:
print ( i)
>> > 22 33
现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中
创建一个办公室列表 和 老师列表 因为3个办公室都不确定有几个座位 所以用[]表示一个办公室,而三个办公室就是[[], [], []] 老师列表就是[‘黄老师’,‘郭老师’,‘欧阳老师’,‘杨老师’,‘吴老师’,‘洪老师’,‘周老师’,‘邱老师’] 用列表offices.append方法 将老师添加到办公室 3个办公室就可以用random.randint(0, 2)生成列表下标 import random
offices = [ [ ] , [ ] , [ ] ]
teachers = [ '黄老师' , '郭老师' , '欧阳老师' , '杨老师' , '吴老师' , '洪老师' , '周老师' , '邱老师' ]
for i in teachers:
offices[ random. randint( 0 , 2 ) ] . append( i)
print ( offices)
---
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210314183654526.png)