python基础(6)列表与元组

目录

一.序列

1.定义

2.相关操作

索引

长度

相加 

重复

检查成员(成员归属)

最大值:max()

最小值:min()

切片

查找元素

统计元素 

3.包括类型 

二.列表

1.创建

2.增

方法一:append( )

方法二:extend()

方法三:insert()

3.删

方法一:pop()

方法二:remove()

方法三:del

4.改

5.遍历

for循环遍历

while循环遍历

range函数索引遍历

enumerate()函数遍历

6.排序

sort()方法和sorted()函数

7.列表推导式

​编辑 8.在序列中能进行的基本操作在列表中都可以进行

三.元组

1.在序列中能进行的基本操作在元组中都可以进行

创建

2.元组不能修改

3.列表与元组区别

四.思维导图


一.序列

1.定义

序列指的是一块可存放多个值的连续内存空间,这些值按一定的顺序排列,可通过每个值所在位置编号(即索引)访问。

2.相关操作

索引

序列名[ ]

#以列表为例
list01=[1, 2, 3]
print(list01[1])
print(list01[-1])

运行的结果是2,3

需要注意的是,列表中的索引从0开始,到 len-1 结束。当然,也存在倒序,从-1开始,到-len 结束。

print(list01[4])
print(list01[-5])
#超出序列长度会报错

无论是索引从正开始还是从负开始,超出序列长度会报错。

 

长度

可以用 len()来查看序列长度。

#字符串
example1 = 'python'
print(len(example1))
#列表
example2 = ['a', 'b', 'c']
print(len(example2))
#元组
example3 = ('d', 'e', 'f')
print(len(example3))

运行结果如下:

 

相加 

python支持对两种相同类型的序列进行相加,即用(+)进行序列连接。

#相加
#顺序不同,打印出来的结果也不同
list01=['唐僧', '孙悟空', '猪八戒', '沙僧']
list02=['黑熊怪', '女儿国国王']
print(list01+list02)
print(list02+list01)

运行结果是:

当类型不相同时,无法运行程序,会出错

#不同类型相加
list03 = ['西游记', 1]
list04 = {2: '红楼梦'}
print(list03+list04)

运行结果:会出现以下错误

重复

序列*n会生成一个将原序列重复n次的新序列

#序列的重复
list05=[1, 2, 3]
list06=list05 * 3
print(list06)
#用id()查看是否形成新序列
print(id(list05))
print(id(list06))

运行结果是:

 

检查成员(成员归属)

python中采用in或者not in来检查一个值是否在序列中,返回的是True或者False

#in 和 not in 判断一个值是否在序列中
list01=['唐僧', '孙悟空', '猪八戒', '沙僧', '黑熊怪', '女儿国国王']
if '孙悟空' in list01:
    print('该值在列表中')
else:
    print('该值不在列表中')

if 'hhh' not in list01:
    print('该值不在列表中')
else:
    print('该值在列表中')

运行结果是:

 

最大值:max()

max( )可以计算序列中最大的元素

#用max()获得序列里最大的元素
list01 = [1, 2, 3]
print(max(list01))

运行结果是:

字符串的比较是逐个比较每一个字符,直到遇到不相等的为止

#用max()获得序列里最大的元素
list02 = ['a', 'b', 'c']
print(max(list02))
#字符串用Unicode进行大小比较
#chr()函数可以返回Unicode对应的单个字符
#ord()函数可以返回单个字符的Unicode
print('字符串的Unicode是:', ord('a'))
#汉字有汉字的比较方式
list03=['唐僧', '孙悟空', '猪八戒', '沙僧', '黑熊怪', '女儿国国王']
print(max(list03))

运行结果是:

 

并不是序列内所有都可以进行比较

#并不是所有的元素都可以进行比较
list03 = ['西游记', 1]
print(max(list03))

运行结果是:

最小值:min()

同最大值

切片

从序列中截取部分元素组成新的序列,不会对原序列产生任何影响。

语法格式:seq[start : syop : step]

其中,seq表示序列名称,start为开始的索引,不传值默认为0,end为结束的索引,不传值默认为序列长度,step为步长,不传值默认为1

#切片的具体使用
list01 = ['唐僧', '孙悟空', '猪八戒', '沙僧', '黑熊怪', '女儿国国王']
print('list01[:]',list01[:])
print('list01[1:5]',list01[1:5])
print('list01[1:5:2]',list01[1:5:2])

运行结果为:

 

查找元素

语法格式:seq.index(x[,i[,j ] ])

从 i 到 j 的范围里x第一次出现的索引

#查找元素举例
list01 = [1, 2, 1, 4, 2, 6, 1]
print(list01.index(2))
#当寻找元素不存在时,会发生异常
print(list01.index(5))

运行结果:

 

统计元素 

语法格式:seq.count(x)

#统计元素
list01 = [1, 2, 1, 4, 2, 6, 1]
print(list01.count(1))
print(list01.count(2))
print(list01.count(6))

运行结果:

3.包括类型 

 字符串,列表,元组,集合,字典

二.列表

1.创建

方法一:通过[ ] 进行创建

#空列表
list01 = []
#非空列表
list02 = [1, 2, 3]
#列表中可以是不同类型的数据
list02 = [1, 'hello', [5, 6, 6]]

方法二:通过list()函数创建

#空列表
list01 = list()
print(list01)
#字符串
list02 = list('python')
print(list02)
#将元组转换为列表
#list()转换函数
list03 = list(('1', 'hello', [5, 6, 6]))
print(list03)
#range对象转换
list04 = list(range(0, 15, 2))
print(list04)

运行结果:

2.增

方法一:append( )

语法格式:list01.append( x)

在列表末尾添加元素x

list01 = [1, 2, 3]
list01.append(4) #该操作无返回值
print(list01)

运行结果:

 

方法二:extend()

语法格式:list01.extend(seq)

在列表末尾添加序列seq

list01 = [1, 2, 3]
list02 = [4, 5, 6]
list01.extend(list01)
print(list01)
list02.extend(list01)
print(list02)

运行结果:

 

方法三:insert()

语法格式:list01.insert(i , x)

在列表第i位添加元素x

list01 = [1, 2, 3]
list01.insert(2,5)
print(list01)

运行结果:

3.删

方法一:pop()

语法格式:list01.pop([ i ])

删除第 i 位元素

list01 = [1, 2, 3, 4, 5, 6]
#默认删除最后一个元素
list01.pop()
print(list01)
#删除索引为i的元素
list02 = [1, 2, 3, 4, 5, 6]
list02.pop(3)
print(list02)

运行结果: 

方法二:remove()

语法格式:list01.remove(x)

删除列表中第一个为 x 的元素

list01 = [1, 2, 1, 4, 2, 6, 1]
list01.remove(1)
print(list01)

运行结果: 

方法三:del

del()可以删除索引,切片,整个列表的内容

# 删除整个列表
list1 = [1, 2, 3, 4, 5, 6]
del list1
print(list1)

运行结果: 表明 list1已经完全被删除了

#删除某个元素
list2 = [1, 2, 3, 4, 5, 6]
del list2[3]
print(list2)
#删除切片
list3 = [1, 2, 3, 4, 5, 6]
del list3[1:2]
print(list3)

运行结果:

 

4.改

列表[索引]= ?

#替换索引位置
list1 = [1, 2, 3, 4, 5, 6]
list1[0] = 9
print(list1)
#替换切片位置
list2 = [1, 2, 3, 4, 5, 6]
list3 = [9,]
list2[2:5] = list3
print(list2)

运行结果:

 

注意的点:切片换切片,实在想换,把其写成序列格式

#错误示范
list4 = [1, 2, 3, 4, 5, 6]
list5 = 8
list4[2:5] = list5
print(list4)
#正确示范
list4 = [1, 2, 3, 4, 5, 6]
list5 = [8,]
list4[2:5] = list5
print(list4)

运行结果:

5.遍历

for循环遍历

使用for循环遍历

#采用for循环遍历列表
list1 = [1, 2, 3, 4, 5, 6]
for elem in list1:
    print(elem,end = '  ')

运行结果:

 

使用for循环遍历(采用下标的方法)

#采用下标和for循环遍历列表
#对list1进行操作
list1 = [1, 2, 3, 4, 5, 6]
for i in range(0,len(list1)):
    list1[i] = list1[i]+10
print(list1)
#对elem进行操作,不对list1进行操作
list1 = [1, 2, 3, 4, 5, 6]
for elem in list1:
    elem += 10
print(list1)

运行结果:

 

while循环遍历

#采用while循环进行遍历
list1 = [1, 2, 3, 4, 5, 6]
i = 0
while i < len(list1):
    print(list1[i])
    i += 1

运行结果:

 

range函数索引遍历

#采用range循环进行遍历
list01 = ['唐僧', '孙悟空', '猪八戒', '沙僧', '黑熊怪', '女儿国国王']
for i in range(len(list01)):
    print(f'索引为{i}的元素是{list01[i]}')

运行结果:

 

enumerate()函数遍历

语法格式:enumerate(index, value)

#使用enumerate函数
list01 = ['唐僧', '孙悟空', '猪八戒', '沙僧', '黑熊怪', '女儿国国王']
for index,value in enumerate(list01):
    print(f'索引为{index}的元素是{value}')

运行结果同上range函数的运行结果 

6.排序

sort()方法和sorted()函数

进行排序操作

sort方法语法格式:list.sort()

sorted()函数语法格式:sorted(iterable, key = None, reverse = False)

                                            iterable:可迭代对象

                                            reverse:指定排序规则,True为降序,False为升序,默认为False

#sort方法
year = [2009, 2004, 2019, 2095, 2035]
year.sort()
print(year)
#方法要依赖与对象或类才能存在
#sorted()函数
year = [2009, 2004, 2019, 2095, 2035]
print(sorted(year))
#函数可以独立存在

二者运行结果:

7.列表推导式

语法格式:list = [ f(x) for x in iterable if condition ]

#一个条件
#获取偶数
numbers1 = [x for x in range(1,10)if x % 2 == 0]
print(numbers1,end=' ')
#两个条件
#获取偶数并对偶数乘2
numbers2 = [x*2 for x in range(1,10)if x % 2 == 0]
print(numbers2,end=' ')

运行结果:

 

 要添加else条件时,必须重新排列,这关系到列表理解元素的顺序

#多个条件
#看以下代码
numbers = []
for x in range(10):
    if 2< x < 5:
        numbers.append(x * 2)
    elif x <= 2:
        numbers.append(x * 3)
    else :
        numbers.append(x * 4)
print(numbers)

采用列表推导式会更加简单

#采用列表推导式
numbers = [2*x if 2<x<5 else 3*x if x<= 2 else 4*x for x in range(10)]
print(numbers)

二者运行结果一样

 8.在序列中能进行的基本操作在列表中都可以进行

  在此不进行过多举例

三.元组

1.在序列中能进行的基本操作在元组中都可以进行

创建

用逗号隔开即可创建一个元组
major_character1 = '唐僧', '孙悟空', '猪八戒', '沙僧'
更常见的创建方法是用()
major_character2 = ('唐僧', '孙悟空', '猪八戒', '沙僧')
当元组只有一个元素时,要加逗号,
major_character3 = (1,)
major_character4 = (1)
print(major_character3)
print(major_character4)

运行结果:

 

 其余方法同开篇提到的序列一致,遍历方法同list相似

2.元组不能修改

major_character1 = ('唐僧', '孙悟空', '猪八戒', '沙僧')
print(major_character1[2])
print(major_character1[2]==2) #判断是否为2
print(major_character1[2]=2)  #会出现红色下划线

如下图所示:


 运行代码会出错:

3.列表与元组区别

列表是可变序列,可以进行增删改,列表更为灵活

元组是不可变序列,不能进行元素的增删改操作

元组的重要性:

1.元组相较于列表访问速度和处理速度更快

2.可以作为字典里的键进行使用,列表则不行

四.思维导图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值