当前位置 博文首页 > 文章内容

    2.2数据结构与序列

    作者: 栏目:未分类 时间:2020-09-20 15:01:01

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    1.列表

    liebiao = ['编号89757','石景文','David','Bob',45,66]
    len(liebiao)

     

    6

     

    用索引来访问list中每一个位置的元素,索引是从0开始的

    liebiao[1]

     

    '石景文'

     

    liebiao[-1]

     

    66

     

    liebiao[5]

     

    66

     

    1)引用传递 将不同列表指向同一个列表

    lie1 = [1,2,3,4]

    lie2 = lie1
    lie2

     

    [1, 2, 3, 4]

     

    2)分片 隔开的两个索引来实现。如果提供两个索引作为边界,则第1个索引的元素包含在分片内,而第2个则不包含在分片内

    要点:左闭右开

    liebiao[:]

     

    ['编号89757', '徐超', 'David', 'Bob', 45, 66]

     

    liebiao[2:4]

     

    ['David', 'Bob']

     

    liebiao[:3]

     

    ['编号89757', '徐超', 'David']

     

    liebiao[2:]

     

    ['David', 'Bob', 45, 66]

     

    3)序列相加

    list1 = [1,2,3,4]
    list2 = [2,3,3,3]

    list1 + list2

     

    [1, 2, 3, 4, 2, 3, 3, 3]

     

    4)成员资格

    liebiao

     

    ['编号89757', '徐超', 'David', 'Bob', 45, 66]

     

    45 in liebiao

     

    True

     

    5)长度、最大值、最小值(len、min、max)

    ll = ['编号89757', '徐超', 'David', 'Bob', '45', '66']

    max(ll)

     

    '编号89757'

     

    min(ll)

     

    '45'

     

    len(ll)

     

    6

     

    6)删除元素与分片赋值

    lizi = list('jskajnsckarituwpo')
    del lizi[3:]
    lizi

     

    ['j', 's', 'k']

     

    lizi[3:]=list('2w74r7')
    lizi

     

    ['j', 's', 'k', '2', 'w', '7', '4', 'r', '7']

     

    del lizi[4:]
    lizi

     

    ['j', 's', 'k', '2']

     

    lizi[2:]=list('2333')
    lizi

     

    ['j', 's', '2', '3', '3', '3']

     

    7)内置函数

    enumerate函数

    for x in enumerate(lizi):
       print(x)
    (0, 'j')
    (1, 's')
    (2, '2')
    (3, '3')
    (4, '3')
    (5, '3')

    sorted函数

    lizi3 = [5,3,21,45,7,56,2,33,90]

    sorted(lizi3)

     

    [2, 3, 5, 7, 21, 33, 45, 56, 90]

     

    sorted(lizi3,reverse=True)

     

    [90, 56, 45, 33, 21, 7, 5, 3, 2]

     

    zip函数

    guojia = ['china','USA','riben','deguo']
    qidu = ['yazhou','meizhou','dongya','ouzhou']

    list(zip(guojia,qidu))

     

    [('china', 'yazhou'),
    ('USA', 'meizhou'),
    ('riben', 'dongya'),
    ('deguo', 'ouzhou')]

     

    8)列表方法

    append 在列表末尾追加新的元素,不返回值

    lbff = ['编号89757','徐超','David','Bob','45',66,'尼克里森']

    lbff

     

    ['编号89757', '徐超', 'David', 'Bob', '45', 66, '尼克里森']

     

    lbff.append('王朝马汉')
    lbff

     

    ['编号89757',
    '徐超',
    'David',
    'Bob',
    '45',
    66,
    '尼克里森',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉']

     

    count 统计某个元素在列表中出现的次数,返回值

    lbff.count('王朝马汉')

     

    4

     

    extend 在列表的末尾一次性追加另一个列表中的多个值,不返回值

    ex = ['zhang heng','taobao']
    lbff.extend(ex)

    lbff

     

    ['编号89757',
    '徐超',
    'David',
    'Bob',
    '45',
    66,
    '尼克里森',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉',
    'zhang heng',
    'taobao',
    'zhang heng',
    'taobao']

     

    index 从列表中找出某个值第一个匹配项的索引位置,返回值

    lbff.index('王朝马汉')

     

    7

     

    insert 将对象插入到列表中,不返回值

    lbff.insert(3,'WORD')

    lbff

     

    ['编号89757',
    'PPT',
    '徐超',
    'WORD',
    'David',
    'Bob',
    '45',
    66,
    '尼克里森',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉',
    'zhang heng',
    'taobao',
    'zhang heng',
    'taobao']

     

    pop 移除列表中的一个元素(默认最后一个),返回该元素的值

    lbff.pop()

    lbff

     

    ['编号89757',
    'PPT',
    '徐超',
    'WORD',
    'David',
    'Bob',
    '45',
    66,
    '尼克里森',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉',
    '王朝马汉']

     

    sort 在原位置对列表进行排序,不返回值

    shulie = [5,3,233,666,21,45,7,56,2,33,90]

    shulie.sort(reverse=True)
    shulie

     

    [666, 233, 90, 56, 45, 33, 21, 7, 5, 3, 2]

     

    2.元组

    tuple

    yz = tuple('pltgmmdhcnsk')
    yz

     

    ('p', 'l', 't', 'g', 'm', 'm', 'd', 'h', 'c', 'n', 's', 'k')

     

    元组拆包(unpacking): 对元组型变量表达式进行赋值,Python会尝试将“=”右侧的值进行拆包

    country = tuple(guojia)

    country

     

    ('china', 'USA', 'riben', 'deguo')

     

    x1,x2,x3,x4 = country

    x4

     

    'deguo'

     

    country.count('china')

     

    1

     

    3.字典

    使用键-值(key-value)存储,具有极快的查找速度。

    字典使用“{ }”用“:”分隔键和值并用“,”分隔项来定义。

    注意:字典中的键是唯一,值不一定是唯一的

     

    zidian = {'迈克尔':'66','孙尚香':'78','李白':'88','始皇帝':'94','贞德':'81'}
    
    zidian

     

    {'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': '81', '迈克尔': '66'}

     

    字典的操作

    1)len() 返回d中项(键-值对)的数量

    len(zidian)

     

    5

     

    2)zidian[k] 返回关联到键k上的值

    zidian['李白']

     

    '88'

     

    3)zidian[k]=v 将值v关联到键k上

    zidian['贞德'] = 86
    zidian

     

    {'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': 86, '迈克尔': '66'}

     

    4)del zidian[k] 删除键为k的项

    del zidian['迈克尔'] #如果用del zidian['94']就会报错,为什么?
    
    zidian

    5)k in zidian 检查zidian中是否含有键k的项

    zidian

     

    {'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': 86}

     

    '孙尚香' in zidian

     

    True

     

    字典的特性

    1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

    zidian2 = {'张龙':'66','赵虎':'55','赵虎':'71','王朝':'77','马汉':'74','展昭':'88'}
    
    zidian2

     

    {'展昭': '88', '张龙': '66', '王朝': '77', '赵虎': '71', '马汉': '74'}

     

    2)键必须不可变,所以可以用数、字符串或元组充当,用列表就不行

    zidian3 = {'包青天':'92','三廉王':'87',['赵贞']:'44'}
        
    zidian3
    ---------------------------------------------------------------------------
    
    TypeError                                 Traceback (most recent call last)
    
    <ipython-input-101-2435c3b44439> in <module>()
    ----> 1 zidian3 = {'包青天':'92','三廉王':'87',['赵贞']:'44'}
          2 
          3 zidian3
    TypeError: unhashable type: 'list'