互联网技术

Python的Tuple&List&Dictionary&Set

2019-12-20  本文已影响0人  LiuShaodong

随着小伙伴们对 Python 的学习不断深入,接触到存数据的 容器 会越来越多。可能有时候,很多 容器 都能满足需求,然而每个 容器 都有其最适合的场景,那么在不同的场景需求面前,如何才能找到最合适的 容器 呢?本篇我们总结一下 Python 中内置的几种 容器 的特点和适合场景,希望可以帮助到小伙伴们进一步加深理解,做到活学活用!

元组(Tuple)

元组是一种 有序 数据容器,元组一旦初始化之后就不可以再改变。也就意味着当我们要使用 Tuple 时,就必须要确定下所有的元素,并在初始化的时候,就将所有的元素写入 Tuple。定义元组使用一对圆括号 ( ),如下,我们演示如何定义一个 Tuple

def tuple_demo():
    tuple1 = (1)  # class 'int'
    print(type(tuple1))
    tuple2 = (1,)  # class 'tuple'
    print(type(tuple2))
    tuple3 = (1, 2, 3)
    print(tuple3)
    tuple4 = ("xiaoqiang", "wangcai", 1, 2)
    print(tuple4)

    # 遍历 tuple 方式1:
    for index in range(len(tuple4)):
        # 取tuple4中的每个角标
        print("index=", index, "data in list=", tuple4[index])
    # 遍历 tuple 方式2:
    for element in tuple4:
        print(element)


def main():
    tuple_demo()


if __name__ == '__main__':
    main()

上面的例子,小伙伴们会发现 Tuple的一个坑,“当 Tuple 只有一个元素的时候,需要在该元素之后加 ,,如果不加 ,,Python 不会将其当做 Tuple 类型处理”;另外,Tuple 中元素不必要求类型一致。

列表(List)

列表也是一种有序的数据容器,区别于 TupleList 可以随意的添加和删除其中的数据,较为灵活。定义列表使用一对方括号 [ ],如下,我们演示一下 List 的定义和使用:

def list_demo():
    list1 = [1, 3, 4, 55, 6, 7, 8, 6, 41, 32]
    # 在该列表后追加0
    list1.append(0)  # [1,3,4,55,6,7,8,6,41,32,0]
    # 在角标为1的位置添加元素2
    list1.insert(1, 2)  # [1,2,3,4,55,6,7,8,6,41,32,0]
    # 删除元素1,如果有多个1,则只删除第一次出现的1
    list1.remove(1)  # [2,3,4,55,6,7,8,6,41,32,0]
    # 第一次出现元素2的角标
    print(list1.index(2))  # 0
    # 统计一下列表中1出现的次数
    print(list1.count(1))  # 0
    # 打印角标从0到3的值
    print(list1[:4])  # [2, 3, 4, 55] 也可以使用print(list_a[0:4]) 0:4,是0,1,2,3  不包括4
    # 对list中的元素排序,从小到大
    list1.sort()
    # 对list中的元素排序,从大到小
    list1.sort(reverse=True)
    # 遍历列表:
    for index in range(len(list1)):
        # 取a_list中的每个角标
        print("index=", index, "data in list=", list1[index])
        
    # 多维列表
    mul_list1 = [[1, 2, 3],
                  [2, 3, 4],
                  [3, 4, 5]]
    print(mul_list1[0][0])  # 输出1


def main():
    # tuple_demo()
    list_demo()


if __name__ == '__main__':
    main()

到这里,可能有的小伙伴会问,“貌似 Tuple 能做的事情,List 也都能做啊,那么 Tuple 有什么存在的必要吗?”,这里要解释一下,由于 Tuple 不可变,所以代码会更安全,如果小伙伴们遇到了可以用 Tuple 代替 List 的场景,那么尽量用 Tuple 代替 List,可以用函数 tuple1 = tuple(list1)List 转成 Tuple

字典(Dictionary)

字典定义了 之间一对一的关系,字典是无序的,在字典中可以通过 来访问该键对应的 ,定义字典是用一对大括号 { },如下,我们演示一下 Dictionary 的定义和使用:

def dict_demo():
    dic = {"apple": 1, "banana": 2, "peer": 3}
    # 可以输出指定的 key 的 value   
    print(dic["apple"]) # 1
    # 删除apple这个key
    del dic["apple"]
    print(dic)  # {"banana":2,"peer":3}

    # 添加一个key
    dic["orange"] = 20
    print(dic)  # {"orange":20,"banana":2,"peer":3}  没有顺序
    # 字典里面定义字典
    dic_dic = {"apple": [1, 2, 3], "pear": {1: "x1", 2: "x2"}, "orange": 2}
    # 打印出 x1
    print(dic_dic["pear"][1])  


def main():
    # tuple_demo()
    # list_demo()
    dict_demo()
    

if __name__ == '__main__':
    main()

集合(Set)

集合是一个无序不重复元素集,定义一个集合使用一对大括号 { },我们演示一下 Set 的定义和使用:

def set_demo():
    char_list = ['a', 'b', 'c', 'd', 'd', 'c']
    a_dict = {1: "he"}
    set(char_list)  # 将 list 转成集合,set中不允许有重复的元素,相当于去重。顺序会被打乱
    print(type(a_dict))
    print(type(char_list))
    print(type(set(char_list)))

    sentence = "Hello Zhou er zhu and hi Zhou da zhu"
    print(set(sentence))  # 会将整个句子按照字母,空格去重
    # {'o', 'h', 'Z', 'd', 'l', 'r', 'H', 'u', 'n', 'i', 'e', 'z', 'a', ' '}

    # 向一个set集合里添加一个元素
    unique_char = set(char_list)
    unique_char.add('x')
    print(unique_char)
    unique_char.clear()  # 清空一个set
    unique_char.remove('x')  # set 中不存在x会报错,可以通过下面的方式来避免这个错误
    unique_char.discard('x')  # set 中不存在x时,不会报错

    # 取两个set的交集:
    set1 = {'a', 'b', 'c', 'd'}
    set2 = {'c', 'd', 'e', 'f'}
    print(set1.intersection(set2))

    # 在set1中但是不在set2中的元素(set1中有,set2中没有):
    print(set1.difference(set2))


def main():
    # tuple_demo()
    # list_demo()
    # dict_demo()
    set_demo()


if __name__ == '__main__':
    main()

到这里本篇就要结束了,我们详细介绍了 Python 的四种常见的容器和使用方法,小伙伴们如想做到在恰当的场景下选用恰当的容器,还需要勤加练习,以掌握每种容器的最佳适用场景。想了解更多 Python 知识的小伙伴们可以关注我的简书!

上一篇下一篇

猜你喜欢

热点阅读