Python的内置的对象模型(数据类型):3.序列类型之元组类型和列表类型


一、元组类型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']]

Python中list去重且保持原顺序不变的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值