Day 7 数据结构常用方法

博客介绍了列表、元组、集合和字典。列表和元组操作方式类似,但列表用[]且可修改,元组用()不可修改;集合与数学定义相同,无重复元素,可进行交、并、差集运算;还给出了字典相关内容的转载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表

def main():
    fruits = ['grape', '@pple', 'strawberry', 'waxberry']
    # 通过下标访问元素
    print(fruits[0])   # grape
    print(fruits[1])   # @pple
    print(fruits[-1])  # waxberry
    print(fruits[-2])  # strawberry
    # print(fruits[-5]) # 位置 -5 不存在, 产生异常 IndexError
    # print(fruits[4])  # 位置 -4 不存在, 产生异常 IndexError
    print(fruits[1:4])  # 切片 ['apple', 'strawberry', 'waxberry']
    fruits[1] = 'apple' # 修改元素 @pple -- 》 apple
    fruits.append('pitaya')  # 在结尾处添加元素 ['grape', 'apple', 'strawberry', 'waxberry', 'pitaya']
    fruits.insert(0, 'banana') # 在位置0处添加元素 ['banana', 'grape', 'apple', 'strawberry', 'waxberry', 'pitaya']
    del fruits[1]  # 删除位置1处元素'grape'  ['banana', 'apple', 'strawberry', 'waxberry', 'pitaya']
    fruits.pop()  # 取出最后的元素,并删除 ['banana', 'apple', 'strawberry', 'waxberry']
    fruits.pop(0)  # 取出位置0处的元素,并删除 ['apple', 'strawberry', 'waxberry']
    fruits.remove('apple')  # 删除指定元素'apple'  ['strawberry', 'waxberry']

    # 生成器
    list1 = list(range(1, 11)) # range创建数值列表 1 到10
    list2 = [x * x for x in range(1, 11)] # 表达式,对 range创建数值列表 每一个元素 平方
    list3 = [m + n for m in 'ABCDEFG' for n in '12345'] # 二重循环, 先遍历字符元素m, 再遍历数字元素n ['A1', 'A2', 'A3', 'A4', 'A5', 'B1', 'B2', 'B3', 'B4', 'B5', 'C1', 'C2', 'C3', 'C4', 'C5', 'D1', 'D2', 'D3', 'D4', 'D5', 'E1', 'E2', 'E3', 'E4', 'E5', 'F1', 'F2', 'F3', 'F4', 'F5', 'G1', 'G2', 'G3', 'G4', 'G5']
    
if __name__ == '__main__':
    main()

 

元组

与列表比较

相同点:操作方式相同,都是一组数据

不同点:列表使用[], 元组使用()

    列表可修改, 元组不可以修改,对元组填删改都不可以

集合

与数学定义得集合一样,不能有重复元素,可以进行交集,并集,差集等运算

def main():
    set1 = {1, 2, 3, 3, 3, 2} # 大括号 表示集合
    print(set1) # 集合自动去除重复值 {1, 2, 3}
    print('Length =', len(set1)) # 长度是 3
    set2 = set(range(1, 10))  # 定义集合, 将列表转成集合 {1, 2, 3, 4, 5, 6, 7, 8, 9}
    set1.add(4) # 添加元素 {1, 2, 3, 4}
    set1.add(5) # 添加元素 {1, 2, 3, 4, 5}
    set2.update([11, 12]) # 添加元素 11,12,  {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12}
    set2.discard(5) # 丢弃元素5, {1, 2, 3, 4, 6, 7, 8, 9, 11, 12}

    if 4 in set2: # 先判断元素4 是否在集合set2中,在则删除,不在时使用remove会引发异常
        set2.remove(4) # {1, 2, 3, 6, 7, 8, 9, 11, 12}

    # 遍历集合容器
    for elem in set2:
        print(elem ** 2, end=' ') # 1 4 9 36 49 64 81 121 144

    set3 = set((1, 2, 3, 3, 2, 1)) # 将元组转换成集合 ,去除重复值 {2,3,4}
    print(set3.pop()) # 取第一个值 1, 并移除
    print(set3) # {2, 3}

    # set1 {1, 2, 3, 4, 5}, set2 {1, 2, 3, 6, 7, 8, 9, 11, 12}
    # 集合的交集  {1, 2, 3}
    print(set1 & set2)
    print(set1.intersection(set2))
    # 并集 {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12}
    print(set1 | set2)
    print(set1.union(set2))
    # 差集 {4, 5}
    print(set1 - set2)
    print(set1.difference(set2))
    # 对称差运算 {4, 5, 6, 7, 8, 9, 11, 12}
    print(set1 ^ set2)
    print(set1.symmetric_difference(set2))
    # 判断子集
    print(set2 <= set1)
    print(set2.issubset(set1))
    print(set3 <= set1)
    print(set3.issubset(set1))
    # 判断超集
    print(set1 >= set2)
    print(set1.issuperset(set2))
    print(set1 >= set3)
    print(set1.issuperset(set3))

if __name__ == '__main__':
    main()

字典

def main():
    scores = {'骆昊': 95, '白元芳': 78, '狄仁杰': 82}
    print(scores['骆昊']) # 输出key 是 骆昊 的 value 95
    print(scores['狄仁杰']) # 输出key 是 狄仁杰 的 value 78
    for elem in scores: # 循环输出字段所有元素 key--->value
        print('%s\t--->\t%d' % (elem, scores[elem]))
    for elem in scores.items():
        print('%s\t--->\t%d' % (elem[0], elem[1]))

    scores['白元芳'] = 65 # 修改key 是 白元芳 的 value, 修改为 65
    scores['诸葛王朗'] = 71 # 修改key 是 诸葛王朗 的 value, 修改为 71
    scores.update(冷面=67, 方启鹤=85) # 新加元素 key 是 冷面的value 67, key 是 方启鹤的value 85
    print(scores) # {'骆昊': 95, '白元芳': 65, '狄仁杰': 82, '诸葛王朗': 71, '冷面': 67, '方启鹤': 85}
    if '武则天' in scores: # 判断 key 武则天, 是否在字典中
        print(scores['武则天'])

    print(scores.get('武则天')) # key 不存在时,输出None
    print(scores.get('武则天', 60)) # key 不存在时,输出第二个参数60
    print(scores.popitem()) # 输出并删除最后的元素 ('方启鹤', 85)
    print(scores.pop('骆昊', 100)) # key 存在时,输出key=骆昊 的value 95
    scores.clear() # 清空字典 {}

if __name__ == '__main__':
    main()

 

转载于:https://www.cnblogs.com/greatX/p/10929320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值