CHAPTER 3-Built-in Data Structures, Functions, and Files

部署运行你感兴趣的模型镜像

数据结构和序列

元组

元组是一个固定长度,不可改变的python序列对象,创建元组的简单方式是用逗号分隔一组值。

tup1 = 1,2,3
tup1

tup2 = ((1,2,3),(4,5))
tup2

使用tuple方法可以将任意的序列或者迭代器转化成元组。

tuple([4,0,2])     # 将列表转化成元组
tuple('string')    # 将字符串转化成元组

元组本身是不可变的序列对象,但是元组中可以存放一些可变对象,一旦元组生成,元组中的对象就不可修改,但是对元组中的可变对象不受影响,可以在元组内原位置上进行修改。

将用➕可以将元组串联起来

元组乘以一个整数,会将几个元组的复制串联起来,对象本身并没有进行复制,只是引用了它。

tup1 = (1,'string',[2025,10,13],True)     # 元组中可以存储的对象类型很多
tup1[3] = False        # 试图将元组中的True更改为False,最终会报错
tup1[2].append(99)     # 在元组中存储的列表后追加一个数字,可以实现

tup2=('happy','good')

tup1 + tup2
tup2 *3

变量拆分可以用来迭代元组或列表序列

seq = [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq:
    print('a={0},b={1},c={2}'.format(a,b,c))

由于元组不可更改,所以元组的方法比较少,最常用的是count(),用来统计元组中某个值出现的次数

tup = (1,2,2,3,1,5,7,2,5)
tup.count(2)

列表

与元组相比,列表的长度可变、内容可以被修改,用方括号[]或者list()函数来定义。

list1 = [1,2,3,5]
str = 'hello world'
list2 = list(str)

列表和元组的语义接近,在许多函数中可以交叉使用。

添加和删除元素

append()可以在列表的末尾添加元素。

insert()在指定位置添加元素,插入的序号必须在0和列表长度之间。

❗️相比于append,insert耗费的计算量更大,因为对后续元素的引用必须在内部迁移。

list = [1,2,3]
list.append(5)
list.insert(3,4)       # 第一个变量是要插入元素索引位置,第二个是要插入的对象

pop()会移除并返回指定位置的元素

remove()用来删除指定的元素,他会在列表中从前往后找寻目标元素,删除找到的第一个。

list = ['abandon','good','luck','hello']
list.append('good')
list.pip(0)
list.remove('good')

用in可以检查列表是否包含某个值,输出结果是布尔类型。

串联和组合列表

与元组类似的是可以用➕将两个列表串联起来。如果已经定义了一个列表,可以用extend()方法追加多个元素

[4,None,'foo'] + [3,4,(6,7)]


list = [4,None,'foo']
list.extend([3,4,(6,7)])
print(list)

排序

在python中可以用sort()对列表原地排序,不会创建一个新的列表,sort()方法中还有一些选项很好用,其中之一是二级排序key,例如可以利用key对一个字符串列表按长度来进行排序

list = [9,2,4,1,5,3]
list.sort()

list_str = ['zhao','qian','sun','li','zheng']
list_str.srot(key=len)

切片

用切片可以选取列表中的一部分,具体方法是【start:stop】,这里的start和stop是想要切片的起始和终止索引。切片也可以被赋值,并且会反应到原始列表当中。切片包含起始位置的值但不会包含终止位置的值。起始和终止都可以被省略,在省略情况下,默认为列表起始位置和终止位置。切片时用负数则表示从后往前进行切片。切片其实还有一个参数step设置步长,在stop后用’:‘隔开,一个聪明的方法是将其定为-1,这样可以将列表颠倒过来。

seq = [7,2,3,7,5,6,0,1]
seq[1:5]

seq[3:4] = [6,3] 
# 注意这里切片只截取了第三个元素,等同于seq[3],因此此处相当于往列表中额外增加了一个元素
seq
seq[:3]    # 省略起始位置,默认从原列表0索引处开始
seq[1:]    # 省略终止位置,默认到原列表最后位置

seq[-4:]    # 用负数从后面开始切片
seq[-6:-2]
seq[::2]    # 设置步长为2,这样就可以隔一个元素取一个元素
seq[::-1]    # 设置步长为-1,来颠倒整个列表

字典

字典是python数据结构中重要的数据结构,也叫做哈希映射或关联数组。它是键值对的大小可变集合,键和值都是python对象。创建字典的方式是用尖括号,用冒号来分隔键和值。

可以用访问列表或元组中的元素一样,访问、插入或者设定字典中的元素。

类似列表和元组,可以用in来检验某个键是否在字典中。

用del()和pop()都能实现删除字典中的值,区别在于pop会有一个返回值。

dict = {'name':'zhangsan','age':24,'school':'ZUEL'} # 创建字典
dict['gender'] = 'male'     # 增加性别键值对
dict['age']     # 访问年龄的值
'name' in dict     # 判断字典中有没有姓名这个键
dict['favorite_food'] = 'noodles'    # 添加最喜欢的食物键值对
dict['mentor'] = 'lisi'    # 增加导师键值对
dict
del dict['favorite_food']    # 删除最喜欢的食物键值对
dict
gender = dict.pop('gender')    # 将性别值返回到gender中并从字典删除性别键值对
dict

集合

集合是无序的不可重复的元素的集合。相当于只有键没有值的字典。

创建集合有两种方式:用set函数或者使用尖括号

集合支持合并、交集、差分和对称差等数学集合运算。

set([1,4,2,2,6])
{22,2,2,1,1,1}

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值