python中的数据结构

您所在的位置:网站首页 map数据结构类型 python中的数据结构

python中的数据结构

2023-03-12 20:31| 来源: 网络整理| 查看: 265

数据结构是高效存储和组织数据的一种方法,它允许你轻松访问和执行数据操作。

在数据结构方面,没有一种适合所有类型的模型。根据不同的需要选择不同的方式来存储数据。

也许你想把所有类型的数据存储在一起,或者你想要一些更快的数据搜索,或者一些只存储不同数据项的东西。

Python有许多内置的数据结构,可以帮助我们轻松地组织数据,因此有必要先了解这些,以便我们在处理数据时,确切地知道哪些数据结构将有效地解决我们的问题。

Python中的内置数据结构(Built-in Data Structure)包括:列表list、元组tuple、字典dict、集合set。

1)列表(list)

列表(List)是一种有序和可更改的集合。Python中的列表是最通用的数据结构,它们用于存储异构数据项。

元素可以是任何数据类型,如数字、字符串等,甚至是另一个列表。

1.1 特点

列表中的每个元素均可变:意味着可以对每个元素进行修改和删除。

列表是有序的:每个元素的位置是确定的,可以用索引去访问每个元素。

列表中的元素可以是Python中的任何对象:元素可以是字符串、整数、元组、也可以是list等Python中的对象。

Python中的list和C语言中的数组很像,只是list中的元素类型可以为Python中的任意对象,C中的数组只能是同种类型。

>>> x = [1,2,3]

>>> y = {'name':'Sakura'}

>>> z="Test"

>>> a=[x,y,z]

>>> a

[[1, 2, 3], {'name': 'Sakura'}, 'Test']

注意 :list不仅可以像数组那样正向索引,也可以反向索引。

1.2 常用方法

thislist = ["apple", "banana", "cherry"] # 创建

print(thislist[1]) # 通过索引号访问

print(thislist[-1]) # 反向索引,-1表示最后一个

print(thislist[2:5]) # 通过指定范围的起点和终点来指定索引范围,返回值将是包含指定项目的新列表,注意是左闭右开

thislist[1] = "mango" # 改

print(len(thislist)) # 列表长度

切片

切片是Python中序列结构独有的一种操作,意思是从序列中选取一个子序列,凡是序列均可切片,list是序列,所以list可以切片。

# 通过[begin:end]方式完成切片

mylist = [1,2,3,4,5]

mylist[0:2] # 生成的序列为[1,2,3]

检查是否存在指定的项

使用 in 关键字

thislist = ["apple", "banana", "cherry"]

if "apple" in thislist:

print("Yes, 'apple' is in the fruits list")

添加项目

append()或者insert()

thislist = ["apple", "banana", "cherry"]

thislist.append("orange") # 将项目添加到列表的末尾

thislist.insert(1, "orange") # 在指定的索引处添加项目

1

2

3

删除项目

remove()或者pop()或者del或者clear()

thislist = ["apple", "banana", "cherry"]

thislist.remove("banana") # 删除指定的项目

thislist.pop() # 删除指定的索引(如果未指定索引,则删除最后一项)

del thislist[0] # 删除指定的索引

thislist.clear() # 清空列表

复制列表

copy()或者list()

list2 = list1 # 注意:list2 将只是对 list1 的引用,list1 中所做的更改也将自动在 list2 中进行。

thislist = ["apple", "banana", "cherry"]

mylist = thislist.copy() # 使用内置的 List 方法 copy()

mylist = list(thislist) # 使用内建的方法 list()

合并两个列表

使用 + 运算符或者extend()

list1 = ["a", "b" , "c"]

list2 = [1, 2, 3]

list3 = list1 + list2

list1.extend(list2)

常用的内建方法:

方法 描述

append() 在列表的末尾添加一个元素

clear() 删除列表中的所有元素

copy() 返回列表的副本

count() 返回具有指定值的元素数量。

extend() 将列表元素(或任何可迭代的元素)添加到当前列表的末尾

index() 返回具有指定值的第一个元素的索引

insert() 在指定位置添加元素

pop() 删除指定位置的元素

remove() 删除具有指定值的项目

reverse() 颠倒列表的顺序

sort() 对列表进行排序

2)元组(Tuple)

元组是有序且不可更改的集合。元组为一个固定的列表,一旦初始化其中的元素便不可修改,只能对元素进行查询。

2.1 特点

tuple不支持对元素的修改(包括删除),tuple一初始化便固定下来了。

涉及到Python中的可变对象和不可变对象,像list这样的就是可变对象,tuple便是不可变对象。

因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

2.2 常见操作

因为元组是固定的列表,所以其内置的大多数的方法和列表是差不多的。

如需创建仅包含一个项目的元组,必须在该项目后添加一个逗号,否则 Python 无法将变量识别为元组。

空的tuple可以记为(),若只有一个元素的tuple记为(1,)

可以通过tuple将序列转换为元组,用法和list一样。

创建元组后,将无法更改其值,但是有一种解决方法:可以将元组转换为列表,更改列表,然后将列表转换回元组。

del 关键字可以完全删除元组。

3)字典(Dictionary)

字典是一个无序、可变和有索引的集合。Python中使用键(key)-值(value)存储,也就是C++中的map。

3.1 特点

字典中的数据必须以键值对的形式出现。

键不可重复,值可重复。

字典中键(key)是不可变的,为不可变对象,不能进行修改;而值(value)是可以修改的,可以是任何对象。

3.2 常见操作

thisdict = { # 创建

"brand": "Porsche",

"model": "911",

"year": 1963

}

x = thisdict["model"] # 获取 "model" 键的值

x = thisdict.get("model") # 同上

thisdict["year"] = 2019 # 更改

for x in thisdict.values(): # 使用 values() 函数返回字典的值

print(x)

for x, y in thisdict.items(): # 使用 items() 函数遍历键和值

print(x, y)

thisdict.pop("model") # pop() 方法删除具有指定键名的项

del thisdict["model"] # del 关键字删除具有指定键名的项目

mydict = thisdict.copy() # 使用 copy() 方法来复制字典

mydict = dict(thisdict) # 使用 dict() 方法创建字典的副本

注意:不能通过键入 dict2 = dict1 来复制字典,因为:dict2 只是对 dict1 的引用,而 dict1 中的更改也将自动在 dict2 中进行。

判断字典中是否(不)存在某个key

in 、not in

#生成一个字典

d = {'name':Tom, 'age':10, 'Tel':110}

#打印返回值,其中d.keys()是列出字典所有的key

print ‘name’ in d.keys()

print 'name' in d

print 'aaa' not in d

#三个的结果都是返回True

4)集合(Set)

集合是无序和无索引的集合。

4.1 特点

集合更接近数学上集合的概念。集合中每个元素都是无序的、不重复的任意对象。

可以通过集合去判断数据的从属关系,也可以通过集合把数据结构中重复的元素减掉。

集合一旦创建,就无法更改项目,但是可以添加新项目。

4.2 常见操作

集合可做集合运算,可添加和删除元素。

集合的创建

创建集合时需要用list作为输入集合,可通过add()方法增加元素,remove()方法删除元素。

集合中重复的元素会被过滤掉。

使用 update() 方法将多个项添加到集合中。

>>> test=set([1,2,3])

>>> test

{1, 2, 3}

thisset = {"apple", "banana", "cherry"}

thisset.update(["orange", "mango", "grapes"])

合并两个集合

可以使用 union() 方法返回包含两个集合中所有项目的新集合,也可以使用 update() 方法将一个集合中的所有项目插入另一个集合中。

set1 = {"a", "b" , "c"}

set2 = {1, 2, 3}

set3 = set1.union(set2)

set1.update(set2)

集合的运算

Python中的集合也可以进行集合的之间的交、并等运算。

>>> s1 = set([1,2])

>>> s2=set([2,3])

>>> s1 & s2 # s1与s2

{2}

>>> s1 | s2 # s1与s2进行或运算

{1, 2, 3}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3