阿里云天池实验室Python学习笔记(二、数据结构)

简介

本文为天池龙珠计划Python训练营的学习笔记,一为记录学习要点,避免日后遗忘;二为记录学习成果,督促学习;三为帮助有需要的小伙伴进行基础知识巩固参考。若有疑问或有错误的地方,欢迎指正留言。本部分主要为整理容器数据类型相关知识。

目录

简介

二、数据结构

1. 列表

(1)定义

(2)操作

2. 元组

(1)定义

(2)操作

3. 字符串

(1)定义

(2)切片与拼接

(3)内置方法

(4)字符串格式化

4. 字典

(1)定义

(2)创建和访问字典

(3)内置方法

5. 集合

(1)定义

(2)创建集合

(3)访问集合中的值

(4)内置方法

(5)集合的转换

(6)不可变集合

6. 序列

(1)定义

(2)针对序列的内置函数

7. 总结

(1)可变类型与不可变类型

(2)映射类型与序列类型


二、数据结构

1. 列表

(1)定义

列表是有序集合,能够保存任意数量任意类型的 Python 对象,利用方括号把所有元素绑定在一起,用逗号将元素分隔开。

[元素1, 元素2, ..., 元素n]

注意,列表中所保存的是对象的指针。即使保存一个简单的[1,2,3],也有3个指针和3个整数对象。

(2)操作

创建列表

可直接创建,或用range()函数,或用推导式进行列表创建。

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x, type(x))
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] <class 'list'>

x = list(range(1, 11, 2))
print(x, type(x))
# [1, 3, 5, 7, 9] <class 'list'>

x = [0 for i in range(5)]
print(x, type(x))
# [0, 0, 0, 0, 0] <class 'list'>

#创建混合列表
mix = [1, 'lsgo', 3.14, [1, 2, 3]]
print(mix, type(mix))  
# [1, 'lsgo', 3.14, [1, 2, 3]] <class 'list'>


#创建空列表
empty = []
print(empty, type(empty))  # [] <class 'list'>

添加元素

可直接创建,或用range()函数,或用推导式进行列表创建。

  • list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list 中保持着原结构类型。
  • list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

注意append()extend()的区别,举例如下:

#append
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(['Thursday', 'Sunday'])
print(x)  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', ['Thursday', 'Sunday']]

print(len(x))  # 6


#extend
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x)  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday', 'Sunday']

print(len(x))  # 7

删除元素

  • list.remove(obj) 移除列表中某个值的第一个匹配项,指定具体要删除的元素
  • list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,指定一个索引
  • del var1[, var2 ……] 删除单个或多个对象。如果知道要删除的元素在列表中的位置,可使用del语句。
#remove
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.remove('Monday')
print(x)  # ['Tuesday', 'Wednesday', 'Thursday', 'Friday']

#pop
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
y = x.pop()
print(y)  # Friday

y = x.pop(0)
print(y)  # Monday

y = x.pop(-2)
print(y)  # Wednesday
print(x)  # ['Tuesday', 'Thursday']

#del
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x)  # ['Wednesday', 'Thursday', 'Friday']

获取元素

通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。

  • 单个元素:x[0],x[-2]
  • 切片的通用写法是 start : stop : step
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:4:2])  # ['Tuesday', 'Thursday']
print(week[:4:2])  # ['Monday', 'Wednesday']
print(week[1::2])  # ['Tuesday', 'Thursday']
print(week[::-1])  
# ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']

常用操作符

  • 等号操作符:==
  • 连接操作符 +
  • 重复操作符 *
  • 成员关系操作符 innot in

举例如下:

list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]

print(list1 == list2)  # False
print(list1 == list3)  # True

list4 = list1 + list2  # extend()
print(list4)  # [123, 456, 456, 123]

list5 = list3 * 3
print(list5)  # [123, 456, 123, 456, 123, 456]

list3 *= 3
print(list3)  # [123, 456, 123, 456, 123, 456]

print(123 in list3)  # True
print(456 not in list3)  # False

注意:前面三种方法(appendextendinsert)可对列表增加元素,它们没有返回值,是直接修改了原数据对象。 而将两个list相加,需要创建新的 list 对象,从而需要消耗额外的内存,特别是当 list 较大时,尽量不要使用 “+” 来添加list。

其他方法

  • list.count(obj) 统计某个元素在列表中出现的次数
  • list.index(x[, start[, end]]) 从列表中找出某个值第一个匹配项的索引位置
  • list.reverse() 反向列表中元素
  • list.sort(key=None, reverse=False) 对原列表进行排序。

2. 元组

(1)定义

Python 的元组与列表类似,不同之处在于tuple被创建后就不能对其进行修改,类似字符串。元组也可以利用整数对其进行索引与切片。元组利用小括号把所有元素绑定在一起,用逗号将元素分隔开。

(元素1, 元素2, ..., 元素n)

注意,创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()。元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。举例如下&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值