美文网首页
Python中的数据结构,你全知道吗?

Python中的数据结构,你全知道吗?

作者: IT赶路人 | 来源:发表于2021-07-02 09:05 被阅读0次

    微信公众号-IT赶路人,专注分享与IT相关知识,关注我,一起升职加薪!

    image.png

    Python已经在全球范围内被用于不同的领域,如制作网站、人工智能和更多领域。但要使所有这些成为可能,数据扮演着非常重要的角色,这意味着这些数据应该被有效地存储,并且必须及时访问。那么你是如何做到这一点的呢?我们使用一种叫做数据结构的东西。话虽如此,让我们来了解一下我们将在Python中介绍的数据结构主题。

    图片

    什么是数据结构?

    组织、管理和存储数据很重要,因为它使访问更容易,修改更有效。数据结构允许您以这样一种方式组织数据,使您能够存储数据集合、关联它们并相应地对它们执行操作。

    Python中的数据结构类型

    Python隐含地支持数据结构,使您能够存储和访问数据。这些结构称为列表、字典、元组和集合。Python允许用户创建他们自己的数据结构,使他们能够完全控制自己的功能。最突出的数据结构有Stack、Queue、Tree、Linked List等等,您也可以在其他编程语言中使用它们。既然您已经了解了可用的类型,为什么我们不前进到数据结构并使用Python实现它们呢?

    图片

    内置数据结构

    顾名思义,这些数据结构内置在Python中,这使得编程变得更容易,并帮助程序员更快地使用它们来获得解决方案。让我们逐一详细讨论一下。

    列表

    列表用于以顺序方式存储不同数据类型的数据。列表中的每个元素都分配了地址,称为索引。索引值从0开始,一直持续到最后一个称为正索引的元素。还有负索引,它从-1开始,使您可以从最后一个到第一个访问元素。现在让我们借助一个示例程序更好地理解列表。

    创建列表

    要创建列表,请使用方括号并相应地向其中添加元素。如果您没有在方括号内传递任何元素,您将得到一个空列表作为输出。

    my_list = [] #create empty list
    print(my_list)
    my_list = [1, 2, 3, 'example', 3.132] #creating list with data
    print(my_list)

    添加元素

    可以使用Append()、Extended()和Insert()函数在列表中添加元素。

    • append()函数将传递给它的所有元素作为单个元素添加。

    • EXTEND()函数将元素逐个添加到列表中。

    • INSERT()函数将传递给索引值的元素相加,并增加列表的大小。

    my_list = [1, 2, 3]
    print(my_list)
    my_list.append([555, 12]) #add as a single element
    print(my_list)
    my_list.extend([234, 'more_example']) #add as different elements
    print(my_list)
    my_list.insert(1, 'insert_example') #add element i
    print(my_list)

    删除元素
    • 要删除元素,请使用Python中内置的del关键字,但这不会向我们返回任何内容。

    • 如果您想要回元素,可以使用POP()函数,该函数接受索引值。

    • 要按元素的值删除元素,请使用Remove()函数。

    my_list = [1, 2, 3, 'example', 3.132, 10, 30]
    del my_list[5] #delete element at index 5
    print(my_list)
    my_list.remove('example') #remove element with value
    print(my_list)
    a = my_list.pop(1) #pop element from list
    print('Popped Element: ', a, ' List remaining: ', my_list)
    my_list.clear() #empty the list
    print(my_list)

    访问元素

    访问元素与访问Python中的字符串相同。您传递索引值,因此可以根据需要获取值。

    my_list = [1, 2, 3, 'example', 3.132, 10, 30]
    for element in my_list: #access elements one by one
    print(element)
    print(my_list) #access all elements
    print(my_list[3]) #access index 3 element
    print(my_list[0:2]) #access elements from 0 to 1 and exclude 2
    print(my_list[::-1]) #access elements in reverse

    其他功能

    在处理列表时,您还可以使用其他几个函数。

    • len()函数向我们返回列表的长度。

    • index()函数查找第一次遇到时传递的值的索引值。

    • count()函数查找传递给它的值的计数。

    • sorted()和sort()函数执行相同的操作,即对列表的值进行排序。排序后的()具有返回类型,而排序()修改原始列表。

    my_list = [1, 2, 3, 10, 30, 10]
    print(len(my_list)) #find length of list
    print(my_list.index(10)) #find index of element that occurs first
    print(my_list.count(10)) #find count of the element
    print(sorted(my_list)) #print sorted list but not change original
    my_list.sort(reverse=True) #sort original list
    print(my_list)

    输出:

    6
    3
    2
    [1, 2, 3, 10, 10, 30]
    [30, 10, 10, 3, 2, 1]

    字典

    字典用于存储键-值对。为了更好地理解,想一想一个电话局,那里添加了成百上千个名字和相应的号码。现在这里的常量值是姓名和电话号码,它们被称为键。各种名字和电话号码就是输入到钥匙上的值。如果您访问密钥的值,您将获得所有的姓名和电话号码。这就是键-值对的含义。在Python中,此结构使用字典存储。让我们通过一个示例程序更好地理解这一点。

    创建字典

    可以使用花括号或使用dict()函数创建字典。无论何时使用字典,都需要添加键-值对。

    my_dict = {} #empty dictionary
    print(my_dict)
    my_dict = {1: 'Python', 2: 'Java'} #dictionary with elements
    print(my_dict)

    输出:

    {}
    {1:‘Python’,2:‘Java’}

    更改和添加键、值对

    要更改字典的值,需要使用键。因此,您首先访问键,然后相应地更改值。要添加值,只需添加另一个键-值对,如下所示。

    my_dict = {'First': 'Python', 'Second': 'Java'}
    print(my_dict)
    my_dict['Second'] = 'C++' #changing element
    print(my_dict)
    my_dict['Third'] = 'Ruby' #adding key-value pair
    print(my_dict)

    输出:

    {‘First’:‘Python’,‘Second’:‘Java’}{‘First’:‘Python’,‘Second’:‘C++’}{‘First’:‘Python’,‘Second’:‘C++’,‘Third’:‘Ruby’}

    删除键、值对

    • 要删除值,请使用POP()函数,该函数返回已删除的值。

    • 要检索键-值对,请使用popitem()函数,该函数返回键和值的元组。

    • 要清除整个字典,请使用Clear()函数。

    my_dict = {'First': 'Python', 'Second': 'Java', 'Third': 'Ruby'}
    a = my_dict.pop('Third') #pop element
    print('Value:', a)
    print('Dictionary:', my_dict)
    b = my_dict.popitem() #pop the key-value pair
    print('Key, value pair:', b)
    print('Dictionary', my_dict)
    my_dict.clear() #empty dictionary
    print('n', my_dict)

    输出:

    值:RubyDictionary:{‘First’:‘Python’,‘Second’:‘Java’}
    键值对:(‘Second’,‘Java’)
    字典{‘First’:‘Python’}{}

    访问元素

    只能使用键访问元素。您可以使用get()函数,也可以只传递键值,这样就可以检索值。

    my_dict = {'First': 'Python', 'Second': 'Java'}
    print(my_dict['First']) #access elements using keys
    print(my_dict.get('Second'))

    输出:

    Python
    Java

    其他功能

    您有不同的函数,它们相应地将键-值对的键或值返回给我们,而键()、值()、项()函数则相应地返回给我们。

    my_dict = {'First': 'Python', 'Second': 'Java', 'Third': 'Ruby'}
    print(my_dict.keys()) #get keys
    print(my_dict.values()) #get values
    print(my_dict.items()) #get key-value pairs
    print(my_dict.get('First'))

    输出:

    DICT_KEYS([‘First’,‘Second’,‘Third’])
    DICT_VALUES([‘Python’,‘Java’,‘Ruby’])
    DICT_ITEMS([(‘First’,‘Python’),(‘Second’,‘Java’),(‘Third’,‘Ruby’)])

    Python

    元组

    元组与列表相同,不同之处在于数据一旦进入元组,无论如何都不能更改。唯一的例外是,当元组中的数据是可变的时,只有在那时元组数据才可以更改。示例程序将帮助您更好地理解。

    创建元组

    您可以使用括号或使用tuple()函数创建元组。

    my_tuple = (1, 2, 3) #create tuple
    print(my_tuple)

    输出:

    (1,2,3)

    访问元素

    访问元素与访问列表中的值相同。

    my_tuple2 = (1, 2, 3, 'python') #access elements
    for x in my_tuple2:
    print(x)
    print(my_tuple2)
    print(my_tuple2[0])
    print(my_tuple2[:])
    print(my_tuple2[3][4])

    输出:

    123
    python(1,2,3,‘python’)
    1
    (1,2,3,‘python’)
    p

    追加元素

    要附加值,您可以使用‘+’运算符,该运算符将接受另一个要附加到它的元组。

    my_tuple = (1, 2, 3)
    my_tuple = my_tuple + (4, 5, 6) #add elements
    print(my_tuple)

    输出:

    (1,2,3,4,5,6)

    其他功能

    这些函数与用于列表的函数相同。

    my_tuple = (1, 2, 3, ['hindi', 'python'])
    my_tuple[3][0] = 'english'
    print(my_tuple)
    print(my_tuple.count(2))
    print(my_tuple.index(['english', 'python']))

    输出:

    (1,2,3,[‘English’,‘python’])
    1
    3

    集合

    集合是唯一的无序元素的集合。这意味着即使数据重复多次,也只会输入到集合中一次。它和你在算术中学过的集合很相似。运算也与算术集相同。示例程序将帮助您更好地理解。

    创建集合

    集是使用花括号创建的,但是您只需将值传递给它,而不是添加键值对。

    my_set = {1, 2, 3, 4, 5, 5, 5} #create set
    print(my_set)

    输出:

    {1,2,3,4,5}

    添加元素

    要添加元素,请使用add()函数并将值传递给它。

    my_set = {1, 2, 3}
    my_set.add(4) #add element to set
    print(my_set)

    输出:

    {1,2,3,4}

    集合操作

    集合上的不同运算,如并集、交集等如下所示。

    my_set = {1, 2, 3, 4}
    my_set_2 = {3, 4, 5, 6}
    print(my_set.union(my_set_2), '----------', my_set | my_set_2)
    print(my_set.intersection(my_set_2), '----------', my_set & my_set_2)
    print(my_set.difference(my_set_2), '----------', my_set - my_set_2)
    print(my_set.symmetric_difference(my_set_2), '----------', my_set ^ my_set_2)
    my_set.clear()
    print(my_set)

    • UNION()函数将两个集合中存在的数据组合在一起。

    • INTERSION()函数仅查找两个集合中存在的数据。

    • Difference()函数删除两者中存在的数据,并输出仅存在于传递的集合中的数据。

    • SYMMPLICAL_DISTIAL()函数的作用与Difference()函数相同,但输出保留在两个集合中的数据。

    输出:

    {1,2,3,4,5,6}-{1,2,3,4,4,5,6}{3,4}-{3,4}{1,2}{1,2,5,6}-{1,2,5,6}

    set()既然您已经了解了内置数据结构,我们就开始学习用户定义的数据结构。对于用户定义的数据结构,名称本身暗示用户定义数据结构的工作方式并定义其中的功能。这使用户可以完全控制数据需要如何保存、操作等。
    

    自定义数据结构

    数组与列表

    数组和列表是相同的结构,只是有一点不同。列出异构数据元素存储,而数组只允许在其中存储同构数据元素。

    堆栈

    堆栈是基于后进先出(LIFO)原则的线性数据结构,其中最后输入的数据将首先被访问。它是使用数组结构构建的,具有推送(添加)元素、弹出(删除)元素和仅从堆栈中称为顶部的一点访问元素的操作。此顶部是指向堆栈当前位置的指针。堆栈主要用于递归编程、反转字、字编辑器中的撤消机制等应用程序中。

    图片

    队列

    队列也是基于先进先出(FIFO)原则的线性数据结构,其中首先输入的数据将首先被访问。它是使用数组结构构建的,并且具有可以从队列的两端执行的操作,即头-尾或前-后。诸如添加和删除元素的操作称为入队和出队,并且可以执行对元素的访问。队列用作流量拥塞管理的网络缓冲区,用于作业调度等操作系统。

    图片

    树是具有根和节点的非线性数据结构。根是数据来源的节点,节点是我们可用的其他数据点。前面的节点是父节点,后面的节点称为子节点。一棵树必须有不同的层次来显示信息的深度。最后的节点称为叶子。树创建了一个层次结构,可以用于许多现实世界的应用程序中,比如超文本标记语言页面。使用树来区分哪个标签属于哪个挡路。它在搜索目的等方面也很有效。

    图片

    链表

    链表是一种线性数据结构,因此不会存储,但使用指针彼此链接。链表的节点由数据和称为NEXT的指针组成。这些结构最广泛地用于图像观看应用、音乐播放器应用等。

    图片

    图表

    图用于存储称为顶点(节点)和边(边)的点的数据集合。图形堪称是现实世界地图最准确的表现形式。它们被用来找出被称为节点的各种数据点之间的各种成本距离,从而找到最少的路径。许多应用程序,如谷歌地图、优步等,都使用图形来找到最短的距离,并以最好的方式增加利润。

    图片

    HashMaps

    HashMap与Python中的字典相同。它们可以用来实现诸如电话簿之类的应用程序,根据列表填充数据等等。

    图片

    这就总结了Python中所有重要的数据结构。我希望您已经了解了Python中的内置和用户定义的数据结构,以及它们的重要性。

    浏览网页:https://www.itxiaonv.com/,了解更多IT信息

    相关文章

      网友评论

          本文标题:Python中的数据结构,你全知道吗?

          本文链接:https://www.haomeiwen.com/subject/vwjsultx.html