zoukankan      html  css  js  c++  java
  • 第三章 Python容器:列表、元组、字典与集合

     

    数据结构的分类依据?基本的“数组”在python中是列表,

    数据结构的作用?容器,盛放数据,是由原子组成的分子。可以将一群数据进行整合、拆分、重排。

    3.2 列表

    列表是啥?顺序表,可以同时存放任意类型数据,可变。

    如何创建列表?3种方式,[ ],list()、列表推导。

    test = ["lizhixin", 1991, 180.0, True]
    >>> b = ('lizhixin', 1991, 180.0, False)
    >>> a =list(b)  #list不能有多个参数,其作用是将其他结构转化为列表
    >>> a
    ['lizhixin', 1991, 180.0, False]

    额外阅读:Python 列表(List)操作方法详解

    list( )函数都有哪些用途?

    如上,可以将元组转化为列表;其次可以将字符串转化为列表,如下:

    >>> a = list("lizhixin")
    >>> a
    ['l', 'i', 'z', 'h', 'i', 'x', 'i', 'n']

    如何分割字符串?使用split()方法,如下:

    >>> a = "lizhixin"
    >>> b = a.split('i')
    >>> b
    ['l', 'zh', 'x', 'n']

    如何获得列表中的某个元素?修改元素? 使用偏移量offset

    >>> a = ["li", "zhi", "xin"]
    >>> a[0] #最多为a[2]
    'li'
    >>> a[-1] #最少为a[-3]==a[0]
    'xin'

    列表中的列表有什么用途? 组成了一个简单的二维数组,如下:

    >>> a = ['li', 'zhi', 'xin']
    >>> b = ['zhang', 'lu']
    >>> c = ['ming']
    >>> d = [a, b, c]
    >>> d
    [['li', 'zhi', 'xin'], ['zhang', 'lu'], ['ming']]
    >>> d[0][0]
    'li'
    >>> d[2][0]
    'ming'

    如何使用切片提取指定范围的元素? 切片用法很多,主要有三个参数,起始、终止和步长。[start:end:step,注意提取到的是end-1。

    >>> a = [0,1,2,3,4,5]
    >>> a[0:3]  #3-1
    [0, 1, 2]
    >>> a[::2]  #默认从0开始
    [0, 2, 4]
    >>> a[::-2]  #从最后开始
    [5, 3, 1]
    >>> a[::-1]
    [5, 4, 3, 2, 1, 0]

    如何向尾部添加元素?如何合并列表?如何插入元素?如何删除指定位置元素?如何删除指定值的元素?如何获取并删除指定位置元素?

    使用列表对象的append( )方法,向列表尾部添加元素:

    >>> a=[]
    >>> a.append("lizhixin")
    >>> a
    ['lizhixin']

    使用对象的extent()方法或 += 运算符合并列表:

    >>> a = ["lizhixin"]
    >>> b = ["zhangminglu"]
    >>> a.extend(b)
    >>> a
    ['lizhixin', 'zhangminglu']
    >>> a = [1]
    >>> b = [2]
    >>> a += b
    >>> a
    [1, 2]

    使用insert()方法在指定位置插入元素:

    >>> a = [1,2,3,4]
    >>> a.insert(1, 5)
    >>> a
    [1, 5, 2, 3, 4]

    使用del 语句 删除指定位置元素:

    >>> a = [1,2,3,4]
    >>> a
    [1, 2, 3, 4]
    >>> del a[2]
    >>> a
    [1, 2, 4]

    使用remove()函数删除指定值元素:

    >>> a.remove(4)
    >>> a
    [1, 2]

    使用pop()函数获取并删除指定位置的元素:

    >>> a.pop()
    2
    >>> a
    [1]

    添加元素:append( ), extent( ), insert( ).

    删除元素:del, remove( ), pop( ).

     

    如何查询具有指定值元素的位置?如何判断值是否存在?如何计算特定值出现的次数?如何转换为字符串?

    使用index()函数查询具有特定值的元素位置:

    >>> a = [1,2,3,4,5]
    >>> a.index(3)
    2

    使用in语句判断值是否存在:

    >>> 5 in a
    True

    使用count()函数计算特定值出现的次数:

    >>> a.count(3)
    1

    使用字符串的join()方法将字符列表转化为字符串:

    >>> a = ['`', 'q', '1']   #其元素不能是非字符
    >>> ''.join(a)
    '`q1'

    如何排序?如何获取长度?如何赋值和赋值列表?

    使用列表sort()方法重新排列元素,改变原列表:

    >>> a = ["li", "zhi", "xin"]
    >>> a.sort()
    >>> a
    ['li', 'xin', 'zhi']

    使用sorted()函数返回排序后列表副本:

    >>> a = ["li", "zhi", "xin"]
    >>> sorted(a)
    ['li', 'xin', 'zhi']
    >>> a
    ['li', 'zhi', 'xin']
    >>> a.sort(reverse=True)
    >>> a
    ['zhi', 'xin', 'li']

    使用len()函数返回列表长度:

    >>> len(a)
    3

    使用=号赋值(对象之间只是引用赋值):

    >>> a = [1, 2, 3]
    >>> b = a
    >>> a[0] = 5
    >>> b
    [5, 2, 3]

    使用列表的copy()方法复制:

    >>> a = [1, 2, 3]
    >>> b = a.copy()
    >>> b
    [1, 2, 3]
    >>> c = list(a)
    >>> c
    [1, 2, 3]
    >>> d = a[::]
    >>> d
    [1, 2, 3]

     

    3.3 元组

    元组与列表的区别?元组是不可变的,不能插入和删除或修改,相当于一个常量列表,只能整体改变。

    怎么创建元组?

    >>> a = ()  #创建空元组
    >>> a
    ()
    >>> a = 1,   #元组不是由括号来创建的,而是由逗号
    >>> a
    (1,)

    元组解包是啥?如何实现?

    >>> a = 1, 2, 3,
    >>> a
    (1, 2, 3)
    >>> b, c, d = a
    >>> b
    1

    额外技巧:

    >>> a = 1  #替换,思路是元组赋值
    >>> b = 2
    >>> a, b = b, a
    >>> a
    2
    >>> b
    1
    如何将列表转化为元组?
    >>> a = [1, 2, 3]
    >>> tuple(a)
    (1, 2, 3)

     

    3.4 字典

    字典的键必须彼此不同,必须是唯一标识。

    怎么创建字典?

    >>> a = {}
    >>> a
    {}
    >>> a = {1:a, 2:b, 3:c}
    >>> a
    {1: {}, 2: 1, 3: 2}

    怎么用其他的结构生成字典?

    任意的双值子序列都行,可以很容易的使用zip()函数生成双元素序列。

    >>> a = [[1, 2], [3, 4], [5, 6]]
    >>> dict(a)
    {1: 2, 3: 4, 5: 6}
    >>> b = ((1, 2), (3, 4), (5, 6))
    >>> dict(b)
    {1: 2, 3: 4, 5: 6}
    >>> c = ('ab', 'cd', 'ef')
    >>> dict(c)
    {'e': 'f', 'c': 'd', 'a': 'b'}

    如何修改字典的值?

    >>> a = {1: 2, 3: 4, 5: 6}
    >>> a[1] = 11
    >>> a
    {1: 11, 3: 4, 5: 6}
    >>> a[6] = 7
    >>> a
    {1: 11, 3: 4, 5: 6, 6: 7}

    如何合并字典?

    使用字典的update()方法合并字典:

    >>> a = {1:2, 3:4, 5:6}
    >>> b = {7:8, 9:0}
    >>> a.update(b)
    >>> a
    {7: 8, 1: 2, 3: 4, 5: 6, 9: 0}

    如何删除指定键的元素?

    del语句

    >>> del a[7]
    >>> a
    {1: 2, 3: 4, 5: 6, 9: 0}

    如何清空所有元素?

    >>> a.clear()
    >>> a
    {}
    >>> a = {}
    >>> a
    {}

    如何判断对象是否在字典内?

    >>> a = {1:2, 3:4, 5:6}
    >>> 1 in a
    True
    >>> 2 in a
    False

    如何获取字典内所有的键?所有的值?如何获取键值对?

    字典的keys()方法 和 values()方法

    >>> a = {1:2, 3:4, 5:6}
    >>> a.keys()
    dict_keys([1, 3, 5])
    >>> a.values()
    dict_values([2, 4, 6])

    字典的items()方法:

    >>> list(a.items())
    [(1, 2), (3, 4), (5, 6)]

    3.5 集合

    没有顺序,就像是舍弃了值的字典。具有数学意义上的所有集合运算。

    如何创建集合?

    >>> a = set()
    >>> a
    set()
    >>> a = {1, 2, 3, 4}
    >>> a
    {1, 2, 3, 4}

    如何将其他结构转化为集合?

    >>> set("lizhixin")
    {'z', 'h', 'l', 'i', 'n', 'x'}
    >>> set([1, 2, 3])
    {1, 2, 3}
    >>> set((1, 2, 3))
    {1, 2, 3}
    >>> set({1:2, 3:4, 5:6})
    {1, 3, 5}

    集合有哪些运算?

    交集

    >>> a = {1, 2}
    >>> b = {2, 3}
    >>> a & b
    {2}
    >>> a.intersection(b)
    {2}

    并集

    >>> a | b
    {1, 2, 3}
    >>> a.union(b)
    {1, 2, 3}

    差集

    >>> a - b
    {1}
    >>> a.difference(b)
    {1}

    异或集

    >>> a^b
    {1, 3}
    >>> a.symmetric_difference(b)
    {1, 3}
    子集
    >>> a <= b
    False
    >>> a.issubset(b)
    False

    超集

    >>> a >= b
    False
    >>> a.issuperset(b)
    False

    真超集

    >>> a > b
    False

     

    3.6 比较

     

    3.7 大型数据结构

  • 相关阅读:
    175. Combine Two Tables
    VirtualBox下安装CentOS7系统
    idea配置maven
    idea配置jdk
    SpringBoot在yml中添加自定义配置并识别
    多表联查另一个表的所有
    java后台判断字符串相等 equals
    查询字段内容截取
    idea刷新项目、清除项目缓存
    SpringBoot集成FreeMarker
  • 原文地址:https://www.cnblogs.com/leezx/p/5592555.html
Copyright © 2011-2022 走看看