一、元组类型tuple
1.创建
元组的内的元素可以是不同类型,可以有相同值,创建后保持此顺序不变。
三种创建方式:
- 啥都不使用创建
- 使用小括号
()
创建 - 用
tuple(obj)
转化类型成元组类型并返回
创建个数:
- 单个元素:
(xxx,)
,留个逗号。 - 多个元素:元素间用逗号,分隔。
(x,x)
和(x,x,)
都行。
# 例1:啥都不使用创建
def func()
return 1,2
# 这个1,2就是一种不使用小括号的元组类型
# 例2:使用小括号`()`创建
creature="cat","dog","tiger","human"
print(creature)
'''
('cat','dog','tiger','human')
'''
# 例3:用tuple(obj)转化类型成元组类型并返回
str = '123'
t = tuple(str)
print(t)
'''
('1', '2', '3')
'''
# 注意:tuple(obj)参数只能是一个元素
# 这样报错:creature = tuple("cat","dog","tiger","human")
# 例4:创建空元组
t1 = ()
t2 = tuple()
print(t1, t2)
print(type(t1), type(t2))
'''
() ()
<class 'tuple'> <class 'tuple'>
'''
# 例5:创建单个元素的元组
t = (3,)
print(t)
'''
(3,)
'''
2.嵌套元组
t1 = (3,'t')
t2 = (t1, '4')
print(t1)
print(t2)
'''
(3, 't')
((3, 't'), '4')
'''
3.特性
元组是序列类型的一种扩展,一旦创建就不能被修改:
- 不像集合set,不论
print()
几遍:原元组均未改变,保持特定的顺序 - 不允许修改:
del obj
报错
t = (3,'t')
# del t[0]
# TypeError
4.索引[]
- 通过下标获取指定元素:
obj[index]
,包括正序和逆序下标 - 切片:比如获得逆序
obj[::-1]
t = 0,1,2,3,(4,5)
print(t[3], t[-2])
print(t[-1][1])
print(t[::-1])
'''
3 3
5
((4, 5), 3, 2, 1, 0)
'''
5.连接两个元组
t1 = (0,1)
t2 = (2,3)
t3 = t1 + t2
print(t3)
'''
(0, 1, 2, 3)
'''
二、列表类型list
1.列表类型定义:
(1)列表是序列类型的一种扩展,创建后可以随意被修改
(2)使用方括号[]
或list()
创建,元素间用逗号,分隔
(3)可以使用或不使用小括号
# 例1:
ls=["cat","dog","tiger",1024]
print(ls)
'''
['cat', 'dog', 'tiger', 1024]
'''
2.传递引用
# 方括号[]真正创建一个列表,赋值仅传递引用
ls = ["cat","dog","tiger",1024]
lt = ls
print(lt)
'''
['cat', 'dog', 'tiger', 1024]
'''
lt[0] = "change"
print(lt)
'''
['change', 'dog', 'tiger', 1024]
'''
# ls也被同步改变了
print(ls)
'''
['change', 'dog', 'tiger', 1024]
'''
3.嵌套序列
# 嵌套序列(比如由一组等长列表组成的列表)
data=[[1,2,3],[4,5,6]]
print(data)
'''
[[1, 2, 3], [4, 5, 6]]
'''
4.函数或方法
(1)ls[i]=x
: 替换列表ls第i元素为x
(2)ls[i:j:k]=lt
: 用列表lt替换ls切片后所对应元素子列表
(3)del ls[i]
: 删除列表ls中第i元素
(4)del ls[i:j:k]
: 删除列表ls中第i到第j以k为步长的元素
(5)ls+=lt
: 更新列表ls,将列表lt元素增加到列表ls中
(6)ls*=n
: 更新列表ls,将元素重复n次
(7)ls.append(x)
: 在列表ls最后增加一个元素x。即入栈
(8)ls.clear()
: 删除列表ls中所有元素
(9)ls.copy()
: 生成一个新列表,赋值ls中所有元素
(10)ls.insert(i,x)
: 在列表ls的第i位置增加元素x
(11)ls.pop([index=-1])
: 将列表ls中第i位置元素取出并删除该元素。默认弹出栈顶。
(12)ls.remove(x)
: 将列表ls中出现的第一个元素x删除
(13)ls.reverse()
: 将列表ls中的元素反转
# 替换
ls=["cat","dog","tiger",1024] #ls[0]='cat'
ls[1:2]=[1,2,3,4]
print(ls)
#['cat', 1, 2, 3, 4, 'tiger', 1024]
# 删除某个元素
del ls[::3]
print(ls)
#[1,2,4,'tiger']
# 重复n次
ls=["cat","dog","tiger",1024]
print(ls*2)
#['cat', 'dog', 'tiger', 1024,'cat', 'dog', 'tiger', 1024]
# 尾部增加
ls=["cat","dog","tiger",1024]
ls.append(1234)
print(ls)
#['cat', 'dog', 'tiger', 1024, 1234]
# 插入到某个下标处
ls.insert(3,"human")
print(ls)
#['cat', 'dog', 'tiger', 'human', 1024, 1234]
# 反转
ls.reverse()
print(ls)
#[1234, 1024, 'human', 'tiger', 'dog', 'cat']
# 定义空列表lt
lt=[]
# 向lt新增5个元素
lt+=[1,2,3,4,5]
# 修改lt中第2个元素
lt[2]=6
# 向lt中第2个位置增加一个元素
lt.insert(2,7)
# 从lt中第1个位置删除一个元素
del lt[1]
# 删除lt中第1-3位置元素
del lt[1:4]
# 判断lt中是否包含数字0
print(0 in lt) #False
# 向lt新增数字0
lt.append(0)
# print(lt)
# [1, 5, 0]
# 返回数字0所在lt中的索引
print(lt.index(0)) #2
# lt的长度
print(len(lt)) #3
# lt中最大元素
print(max(lt)) #5
# 清空lt
lt.clear()
5.降维
d = [[1, 2], [3]] + []
print(d)
'''
[[1, 2], [3]]
'''
d = sum([[1], [2], [3]], [])
print(d)
'''
[1, 2, 3]
'''
6.排序
对其内元素是序列的,按照第几个来排序
>>> l = [[3,'c'],[2,'b'],[1,'a']]
>>> l.sort(key=lambda k:k[0])
>>> l
[[1, 'a'], [2, 'b'], [3, 'c']]