文章目录
- 序列
- 列表
- 列表的创建
- 列表的基本特性
- 连接操作符和重复操作符
- 成员操作符(in和not in)
- 索引
- 切片
- for循环
- 列表的常用方法
- 增加
- 修改(通过索引和切片重新赋值)
- 查看
- 删除
- 其他操作
- 元组(和列表相比,不能增删改元素)
- 元组的创建
- 元组的特性
- 常用方法
- 命名元组namedtuple
- is和==的区别
列表和数组的区别:
数组只能存放同一种数据类型
而列表能存放不同数据类型
元组和列表的区别:
元组不能增删改、其他和列表一样
序列
-
什么是序列:
成员是有序排列的,且可以通过下标偏移量访问到它的一个(即索引)或者访问几个成员(即切片),这类类型统称为序列。 -
序列数据类型包括:字符串、列表和元组、
-
特点:支持以下特性:
索引和切片操作符
成员关系操作符(in 和 not in)
连接操作符(+)以及重复操作符(*)
数字10是序列吗?
不是,数字10,既不能索引也不能切片,所以不是序列
列表
列表的创建
#列表的创建
list=[]
print(list,type(list))
li=[1]
print(li,type(li))
列表的基本特性
连接操作符和重复操作符
print([1,2] + [2,3]) #[1,2,2,3]
print([1,2] * 3) #[1,2,1,2,1,2]
成员操作符(in和not in)
print(1 in [1, 2, 3]) # true
# bool类型中:True也表示为1,False也表示为0
print(1 in ["a", True, [1, 2, "z"]]) # True
print(1 in ["a", False, [1, 2, "z"]]) # False
print(0 in ["a", False, [1, 2, "z"]]) # True
索引
list = [1,2,3,[1,'b',3]]
print(list[0]) #1
print(list[2]) #3
print(list[-1]) #[1,'b',3]
print (list[-1][-2]) #b
print(list[3][1]) #b
切片
list=['172','25','254','100']
print(list[:2]) #['172','25']
print(list[1:]) #['25','254','100']
print(list[::-1]) #['100', '254', '25', '172']
#需求:已知['172','25','254','100'],输出100-254-25
print('-'.join(list[3:0:-1])) #方法1
print("-".join(list[1:][::-1])) #方法2
print("-".join(list[::-1][:3])) #方法3
for循环
names = ["mary","joe","jack"]
for item in names:
print(f"姓名是{item}")
列表的常用方法
增加
#在列表结尾追加
list=[1,2,3]
list.append(4)
print(list) #[1,2,3,4]
# 在列表开头添加
list=[1,2,3]
list.insert(0,'cat')
print(list) #['cat',1,2,3]
# 在某一个索引之前添加
list=[1,2,3]
list.insert(2,'cat') #在索引2前面添加
print(list)
# 依次追加多个元素
list=[1,2,3]
#list.append([4,5,6]) #[1, 2, 3, [4, 5, 6]],, append只能将456作为一个列表添加进去
list.extend([4,5,6])
print(list)
修改(通过索引和切片重新赋值)
#通过索引直接修改
list=[1,2,3]
list[0]='cat'
print(list)
list[-1]='dog'
print(list)
#通过切片修改
list=['a','b','c']
list[:3]=['cat','dog','pig']
print(list)
list[1:3]=['rabbit','panda']
print(list)
查看
#通过索引和切片查看元素
list=['a','b','c','a','a','c']
print(list[2]) # c
print(list[1:6]) # bcaac
print(list[:2]) #ab
print(list[4:])#ac
#查看元素出现次数和索引值
print(list.count('a')) #3,查看列表中元素a出现的个数
print(list.index('c')) #2 查看列表中元素c的索引,找到第一个之后就返回
删除
#根据索引删除元素
list=['a','b','c','a','a','c']
list.pop(-1) #删除最后一个元素 ['a','b','c','a','a']
list.pop(0) #删除索引为0的元素 ['b','c','a','a']
print(list)
list=[1,2,3]
delete_num=list.pop(0) #将删除的元素存储在变量delete_num中
print('删除的元素是:', delete_num)
#根据value值删除
li=['a','b','c','b','c']
li.remove('c') #将出现的第一个元素c删除
print(li)
#全部清空
li=['a','b','c']
li.clear()
print(li)
其他操作
list=[14,24,5,99]
#reverse翻转函数
list.reverse() #和list[::-1]类似
print(list) #[99, 5, 24, 14]
#sort排序函数
list.sort()
print(list) #[5, 14, 24, 99] 由小到大排序
list.sort(reverse=True)
print(list) #由大到小排序
#copy复制函数
li=list.copy()
print(id(li),id(list)) #查看这两个链表的地址
print(li,list) #查看这两个链表的内容
元组(和列表相比,不能增删改元素)
!!!当元组中只有一个元素时,元素后面一定要加逗号
元组的创建
t1 = ()
print(t1, type(t1)) # () tuple
t2 = (2)
print(t2, type(t2)) # 2 int型
t3 = (2,)
print(t3, type(t3)) # 2 tuple
t4 = (1, 2.2, True, [1, 2, 3])
print(t4, type(t4))
元组的特性
#连接和重复
t=(1,2,'c')
print(t+('a',))
print(t*3)
#成员操作符
t=(1,2,'hello')
print('hello' in t)
print('hi' not in t)
#索引和切片
t=(1,2,'a','c')
print(t[0]) #1
print(t[-1]) # c
print(t[:2]) #(1,2)
print(t[::-1]) #('c', 'a', 2, 1)
常用方法
#常用方法:元组是不可变数据类型(不能增删改)
#查看
#通过索引和切片查看
#查看索引值和元素出现次数
t=(1,2,3,'a','b',2)
print(t.count(2)) #2
print(t.index(2)) #1
命名元组namedtuple
对元组中的每个元素都设置了名字,在操作以及读代码的时候更加方便
tu=("li",18, "西安")
print(tu[0],tu[1],tu[2])
#从collections模块中导入namedtuple工具
from collections import namedtuple
#创建命名元组对象User
User=namedtuple('User',('name','age','city'))
#给命名元组传值
user1=User("li",18, "西安")
#打印命名元组
print(user1)
print(user1.name)
print(user1.age)
is和==的区别
"""
python中:
==用于判断类型和值是否相等
is用于判断类型和值是否相等,内存地址是否相等, is也被叫做同一性运算符
"""
print(1 == '1') # false 整型不等于字符串
li = [1, 2, 3, 'a']
li1 = li.copy()
print(li1 == li) #True,均为列表,且值相等
print(id(li),id(li1)) #查看内存地址
print(li1 is li) #False, 类型和值相等,但是内存地址不同