Chapter-3 Python 复合数据类型

重点总结

  • listtupledictset四种类型哪些是可变的?
  • 元组只能调用两个方法:count() index()
  • listtupledict 有序,set 无序

1 | 列表 List

可变对象,

适用场景:利用顺序和位置定位元素,尤其是元素顺序或内容经常发生改变时

底层实现:以 dynamic array 实现,增删元素时动态分配释放内存,缺点是同时支持多种数据类型会导致内存空间占用得比较分散,因此占用更多空间

可嵌套:列表可嵌套列表,即多维列表 Multidimensional List

>>> a, b = [1, 2, 3, 4], [5, 6, 7, 8]
>>> sum = [a, b]
>>> sum
[[1, 2, 3, 4], [5, 6, 7, 8]]  # 嵌套
>>> sum[0][3]  # 取值
4

1-1 | 基本操作

  • 创建

    l = []  # M1
    l = list()  # M2
    
  • 转换

    语法:list(iterable)

    l=list((1,2,3))
    >>> l
    [1, 2, 3]
    >>> list({
         'a':1,'b':2})
    ['a', 'b']
    
  • 获取 & 修改

    语法:list[offset]

    offset 必须在有效范围内,即小于 len(list),否则 IndexError,-1 代表最后一个位置

    a = [1, 2, 3]
    >>> a[1]
    2
    
    >>> a[1] = 0
    >>> a
    [1, 0, 3]
    
  • 获取元素个数

    a = [1, 2, 3]
    >>> len(a)
    3
    
  • 拼接

    squares = [1, 4]
    >>> squares + [9, 16]
    [1, 4, 9, 16]  # squares 此时依旧是[1, 4]
    
    >>> squares += [9, 16]
    >>> squares
    [1, 4, 9, 16]
    
  • 切片

    语法:list[start:end:step]

    与字符串用法类似,但可以修改原数据值,

    l[2:5] = ['a','b','c']   # 可修改部分元素
    l[2:5] = []              # 删除部分元素 
    l[:] = []                # 修改整个列表
    

    ⚠️ 注意为切片赋值时,值必须是可迭代对象即使切片仅有一个值也不行!

    l = [1,2,3]
    >>> l[:1] = 4        # TypeError: can only assign an iterable
    >>> l[:1] = (888,)   # [888, 2, 3]
    
  • 计数

    a = [1,1,1,1]
    >>> a.count(1)
    4
    

1-2 | 复制

💻运算符 *

与字符串相同,可直接乘倍数

>>> [0] * 5
[0, 0, 0, 0, 0]
💻copy()

⚠️ 列表赋给多个变量时,其中一个修改了 另一个也跟着变,因此列表内置 copy() 方法

>>> a = [1,2,3]
>>> b = a
>>> b.pop()
3

>>> a, b
([1, 2], [1, 2])
>>> print(a,b)
[1, 2] [1, 2]

⭕正确方法是 b=a.copy() 即可保证双方互不影响

1-3 | 增加元素

💻append()

语法:append(object)

------该方法将被添加元素作为单独元素添加,直附不拆

>>> l=['a','b']
>>> l.append(['c','d'])  #可以填写含有变量的表达式
['a','b',['c','d']]
💻extend()

语法:extend(iterable)

将可迭代的变量依次插入

>>> l = [1,2,3]
>>> l.extend([4,5])
>>> l.extend(6)
TypeError: 'int' object is not iterable
💻insert()

语法:insert(index, object)

⚠️在指定索引之前插入

>>> l = [1,2,3]
>>> l.insert(-1, "4")
>>> l
[1, 2, '4', 3]

>>> l1 = [1,2,3]
>>> l1.insert(0, 9)
>>> l1
[9, 1, 2, 3]

⚠️负数索引有所不同,参数为 -1 但实际插入的是 -2 的位置

>>> l = [1,2,3]
>>> l.insert(-1, 'x')
>>> l
[1, 2, 'x', 
  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值