zoukankan      html  css  js  c++  java
  • python——数据结构

    一、列表

    对于列表a=[1,2,3,4,5,5,7],我们有:

    • a.append(num)

    是指对列表做“在后面添加一个数字num的作用”。

    • a.insert(i,num)

    是指在列表a中的位置i处插入数字num。

    • a.count(num)

    对出现于a中的数字bnum进行计数。

    • a.remove(num)

    对列表进行移除数字num的操作。

     a.reverse()

    对列表a进行反转操作。

    • a.extend(b)

    将列表b添加到列表a后面。

    del a[num]

    删除列表a中num处的数字。

    2.1 将列表用作栈和队列

    栈:后进去的第一个出来。

    队列:先进先出。

    a.pop();
    a.pop(i);//弹出第i个元素。
    a.pop(0);//弹出第一个元素

     三、元组

    元组是由数个逗号分割的值组成。

    >>> a = 'Fedora', 'ShiYanLou', 'Kubuntu', 'Pardus'
    >>> a
    ('Fedora', 'ShiYanLou', 'Kubuntu', 'Pardus')
    >>> a[1]
    'ShiYanLou'
    >>> for x in a:
    ...     print(x, end=' ')
    ...
    Fedora ShiYanLou Kubuntu Pardus

    你可以对任何一个元组执行拆封的操作

    我们使用的函数是divmod(a,b)函数,其中divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

    >>> divmod(15,2)
    (7, 1)
    >>> x, y = divmod(15,2)
    >>> x
    7
    >>> y
    1

    但要注意,元组是不可变的类型,这意味着你不能在元组内删除添加编辑任何值。否则将会报错。

    >>> a = (1, 2, 3, 4)
    >>> del a[0]
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object doesn't support item deletion

     四、集合

    集合是一个无序不重复元素的集,基本功能是测试和消除重复的元素。

    创建集合:通过set()函数,注意,想要创建空集合,使用的是set()而不是{},后者用来创建字典的,

     集合常见的操作:

    >>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    >>> print(basket)                      # 你可以看到重复的元素被去除
    {'orange', 'banana', 'pear', 'apple'}
    >>> 'orange' in basket
    True
    >>> 'crabgrass' in basket
    False
    
    >>> # 演示对两个单词中的字母进行集合操作
    ...
    >>> a = set('abracadabra')
    >>> b = set('alacazam')
    >>> a                                  # a 去重后的字母
    {'a', 'r', 'b', 'c', 'd'}
    >>> a - b                              # a 有而 b 没有的字母
    {'r', 'd', 'b'}
    >>> a | b                              # 存在于 a 或 b 的字母
    {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
    >>> a & b                              # a 和 b 都有的字母
    {'a', 'c'}
    >>> a ^ b                              # 存在于 a 或 b 但不同时存在的字母
    {'r', 'd', 'b', 'm', 'z', 'l'}

    同时,从集合中添加uo弹出元素:

    >>> a = {'a','e','h','g'}
    >>> a.pop()  # pop 方法随机删除一个元素并打印
    'h'
    >>> a.add('c')
    >>> a
    {'c', 'e', 'g', 'a'}

    五、字典

    字典:是无序的键值对,其中,同一个字典内的键必须是互不相同的。

    一对大括号{}的可以创建一个字典,

    主要形式:

    >>> data = {'kushal':'Fedora', 'kart_':'Debian', 'Jace':'Mac'}
    >>> data
    {'kushal': 'Fedora', 'Jace': 'Mac', 'kart_': 'Debian'}
    >>> data['kart_']
    'Debian'

    创建新的键值对:

    >>> data['parthan'] = 'Ubuntu'
    >>> data
    {'kushal': 'Fedora', 'Jace': 'Mac', 'kart_': 'Debian', 'parthan': 'Ubuntu'}

    使用del删除键值对:

    >>> del data['kushal']
    >>> data
    {'Jace': 'Mac', 'kart_': 'Debian', 'parthan': 'Ubuntu'

    使用 in 关键字查询指定的键是否存在于字典中。

    >>> 'ShiYanLou' in data
    False

    如果你想要遍历一个字典,使用字典的 items() 方法。

    >>> data
    {'Kushal': 'Fedora', 'Jace': 'Mac', 'kart_': 'Debian', 'parthan': 'Ubuntu'}
    >>> for x, y in data.items():
    ...     print("{} uses {}".format(x, y))
    ...
    Kushal uses Fedora
    Jace uses Mac
    kart_ uses Debian
    parthan uses Ubuntu

    但大多数时候,我们需要往字典中添加元素,我们首先需要判断这个元素是否存在,,不存在则创建默认值,但是如果在循环中执行这个操作,会减低程序的性能,为此,我们可以使用:dict.setdefault(key, default)完成这个事情。

    >>> data = {}
    >>> data.setdefault('names', []).append('Ruby')
    >>> data
    {'names': ['Ruby']}
    >>> data.setdefault('names', []).append('Python')
    >>> data
    {'names': ['Ruby', 'Python']}
    >>> data.setdefault('names', []).append('C')
    >>> data
    {'names': ['Ruby', 'Python', 'C']}

    如果你想要在遍历列表(或任何序列类型)的同时获得元素索引值,你可以使用 enumerate()

    >>> for i, j in enumerate(['a', 'b', 'c']):
    ...     print(i, j)
    ...
    0 a
    1 b
    2 c

    也许需要同时遍历两个序列类型,你可以使用 zip() 函数。

    >>> a = ['Pradeepto', 'Kushal']
    >>> b = ['OpenSUSE', 'Fedora']
    >>> for x, y in zip(a, b):
    ...     print("{} uses {}".format(x, y))
    ...
    Pradeepto uses OpenSUSE
    Kushal uses Fedora
  • 相关阅读:
    c++,模板函数的定义和使用【初探】
    c++,内联成员函数
    C++,对象成员的访问
    c++,public/protected/private权限修饰符
    c++,static 静态成员变量 / 静态成员函数
    C++,对象的 =赋值 以及 复制构造函数赋值
    Android 的提权(root)原理【转】
    高通LCD的pwm背光驱动
    IP地址的分类——a,b,c 类是如何划分的【转】
    Android分区
  • 原文地址:https://www.cnblogs.com/blogxsc/p/13795995.html
Copyright © 2011-2022 走看看