Python组合数据类型

组合数据类型

一 列表

(一) 列表的特有方法

使用方式:列表名.方法名()

1 增加元素
  • append(item):将item添加到列表的最后位置
  • insert(pos,item):将item插入的指定位置。
    • pos如果超过最大索引,将item插入最后位置
    • pos如果小于最小索引,将item插入到最开始位置
  • extend(iterable):将序列内元素全部插入到尾部。
names = ['zs','ls','ww']

# 新增同学ml
names.append("ml")  
print(names)  # ['zs','ls','ww','ml']

# 将ml插入到第一个位置
names.insert(0,'ml')  # ['ml','zs','ls','ww']
print(names)

names.insert(1000,'111')  # [ 'zs', 'ls', 'ww','111']
names.insert(-1000,'111')  # ['111', 'zs', 'ls', 'ww']


names.extend(1,2,3,4)  # 错误,只能有一个参数
names.extend([1,2,3,4])  #  ['zs','ls','ww',1,2,3,4]

names.extend(range(1,100))
2 删除操作
  • 已知索引删元素,返回被删除的元素
    • pop():删除最后一个元素
    • pop(index):删除指定位置的元素。
  • 已知元素删元素:remove(item):删除第一次满足条件的指定元素,不存在会报错
  • del 待删的对象,不属于列表特有
  • clear:清空列表,只剩空列表
li = [1,2,3,4,5,6,2]

# pop
li.pop()  # 删除最后一个元素
# 删除指定位置元素
li.pop(3)  # 删除元素4
li.pop(100)  # 报错,索引错误

# remove
li.remove(3)  # 删除元素3本身
li.remove(10)  # 错误,元素不存在

li.remove(2)  # 删除第一次出现的元素

# del
del li[2]  # 删除元素3
del li  # 删除列表li
del li[1:3]  # 删除元素2,3

# clear
li.clear()  # []
3 修改

通过操作来实现修改

  • 列表名[index] = new_value
  • reverse():列表倒序
  • sort():按照Unicode编码排序,同种类型才可以比较
li = [1,2,3,4,5,6,2]

li[2] = 30
print(li) # [1,2,30,4,5,6,2]

# reverse()
li.reverse()
print(li) # [6,5,4,3,2,2,1]

# sort
li.sort()  # [1, 2, 2, 3, 4, 5, 6]


li2 = ['a','w','e','g']
li2.sort()
print(li2)  # ['a','e','g','w']


4 查找
  • 已知索引查元素:列表名[index]

  • 已知元素查索引:index(item):将第一个满足条件元素的索引值返回。(保证元素在列表中)

    li = [1,2,3,4,5,6,2]
    
    li.index(2)  # 1
    li.index(10) # 报错
    
  • count(item):统计item在列表中出现的次数

    li.count(10) # 0 
    li.count(2)  # 2
    li.count(3)  # 1
    
(二) 列表嵌套
li = [1,2,3,[4,5,6]]
print(li[1])  #  2
print(li[3][1])  # 5

print(len(li))
(三)深浅拷贝
  • 赋值:修改原列表会影响赋值列表
  • 浅拷贝:只拷贝列表的最外层,内部全部引用。修改最外层列表,不会影响浅拷贝对象,修改列表内层对象会影响浅拷贝对象。
  • 深拷贝:拷贝所有可变类型,原列表改变不影响深拷贝对象
lst = [1,2,3,4]
lst1 = [1,2,3,[4,5]]

# 赋值
lst2 = lst
lst22 = lst1

# 浅拷贝
lst3 = lst.copy()
lst33 = lst1.copy()

# 深拷贝
import copy
lst4 = copy.deepcopy(lst)
lst44 = copy.deepcopy(lst1)

# 操作
# 增加元素5
# lst.append(5)
# 向内部列表添加元素6
lst1[3].append(6)


# 查看
print(lst)    #  [1,2,3,4,5]
print(lst2)   #  [1,2,3,4,5]
print(lst3)   #  [1,2,3,4]
print(lst4)   #  [1,2,3,4]


print(lst)    # [1,2,3,[4,5,6]]
print(lst22)  # [1,2,3,[4,5,6]]
print(lst33)  # [1,2,3,[4,5,6]]
print(lst44)  # [1,2,3,[4,5]]



l1.append(6)
print(l1)   # [1,2,3,[4,5],6]
print(l2)   # [1,2,3,[4,5],6]
print(l3)  #  [1,2,3,[4,5]]
print(l4)  #  [1,2,3,[4,5]]

l1[3].append(6)

print(l1)  # [1,2,3,[4,5,6]]
print(l2)  # [1,2,3,[4,5,6]]
print(l3) # [1,2,3,[4,5,6]]
print(l4)  # [1,2,3,[4,5]]
(四)列表推导式(高级操作)

1.列表推导式的基本格式:

变量名= [表达式 for 变量 in 列表] 或者

变量名= [表达式 for 变量 in 列表 if 条件]

2.执行流程

遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算

或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式

# 练习:将lst中每一个元素进行平方后放入到一个新列表中
lst = [1, 2, 3, 4, 5]

l2 = []
for i in lst:
    l2.append(i*i)    
print(l2)

# 推导式
l2 = [i*i for i in lst]


3 推导式好处和不足

  • 优点:简化代码,提高代码的简洁性
  • 不足:降低代码的可读性

二 元组(tuple)

(一) 定义

1 定义:元组是一个不可修改的,元素以逗号分隔的以小括号包围的有序序列

2 特点:不可修改,有序的,序列。

3 格式:元组名= (item1,item2,...)

注意:空元组可以直接写一对圆括号(),如果表示只包含 一个元素的元组,该元素后必须添加逗号。

t1 = ()  # 空元组
t2  = (1,)  # 包含一个元素的元组
t3 = (1)  # 仅表示数字1,不是元组类型
(二)元组序列操作
  • 索引
  • 切片
  • 拼接和重复
  • 赋值
  • 遍历
(三)元组的特有方法
1 查看
  • 已知索引查元素:元组名[index]
  • 已知元素查索引: 元组名.index(item)
  • 统计元素出现次数:count(item)
( 四 )元组的嵌套和类型转换

list(iterable)/tuple(iterable)

t = (1,'s',1.3,[5,6,7],(8,9,10))
# 获取数字7
t[3][2]
t[2] = 20  # 报错,原因元组不可变

l = list(t)  # [1,'s',1.3,[5,6,7],(8,9,10)]
t2 = tuple(l)  # (1,'s',1.3,[5,6,7],(8,9,10))

s = "hello world"

t3 = tuple(s)  # ('h' ,'e' ,'l' ,'l' ,'o' ,' ' ,'w' ,'o' ,'r' ,'l' ,'d')

t4 = tuple(100)  # 报错
枚举:
内置方法:enumerate(iterable,[start=0]):枚举,返回一个元组(index,value)
  • 如果遍历该对象,一个变量接收那么该变量是元组类型。如果有两个变量接收,那么第一个变量是编号,第二个为元素本身。
li = [1,2,3,4,5]
t= (6,7,8,9,10)

# 单个变量接收
for i in enumerate(t):  #默认从0 开始编号
    print(i)
	#(0, 6)
	#(1, 7)
	#(2, 8)
	#(3, 9)
	#(4, 10)

# 两个变量接收
for i,j in enumerate(li,start=100):  # 从100开始编号
    print("编号是:",i)
    print("对应的元素是:",j)
    #编号是: 100
	#对应的元素是: 1
	#编号是: 101
	#对应的元素是: 2
	#编号是: 102
	#对应的元素是: 3
	#编号是: 103
	#对应的元素是: 4
	#编号是: 104
	#对应的元素是: 5
(五)应用场景
  • 用户自定义元组:需要保存的数据为不能改变的内容。用元组保存全班人的姓名
    ,一个变量接收那么该变量是元组类型。如果有两个变量接收,那么第一个变量是编号,第二个为元素本身。
li = [1,2,3,4,5]
t= (6,7,8,9,10)

for i in t:
    print(i)


# 单个变量接收
for i in enumerate(t):  #默认从0 开始编号
    print(i)

# 两个变量接收
for i,j in enumerate(li,start=100):  # 从100开始编号
    print("编号是:",i)
    print("对应的元素是:",j)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值