Python容器--list, tuple, dict, set

## Python 中有四种用于存放数据的序列--list, tuple, dict, set

## list 列表
  - 可以存放任意类型数据的有序序列
  - 列表可以由零个或多个元素组成,元素之间用逗号分开,整个列表被方括号所包裹:
  - 创建
    - 使用[]或者list()创建列表
    - new_list = ["Stanley", "Loves", "Lily"]

  - 访问及修改
    - 使用列表名[索引]来访问和修改列表元素,索引初始值为0,最大值不超过列表长度 - 1
    - print(new_list[1]) # -> "Loves"
    - new_list[1] = "Adore"
    - print(new_list) # -> [‘Stanley‘, ‘Adores‘, ‘Lily‘]
    - 若索引可以为负数,则是从列表末尾以-1为初始值开始计数

  - 使用[start, end, step]分片生成新的列表(新列表和旧列表位于不同内存地址)
    - [:]提取从开头到结尾的整个字符串
    - [start:]从start提取到结尾
    - [:end]从开头提取到 end - 1
    - [start:end]从start提取到end - 1
    - [start:end:step]从start提取到end - 1,每隔step个字符提取
    - start,end,step可以为负数,start和end为负数表示从右往左数,从-1开始计数,step为负数则表示倒序

  - 与列表有关的常用函数
    - len(a_list):返回列表长度
    - a_list.append(新元素):将新元素添加至列表末尾
    - a_list.extend(another_list):将another_list添加至a_list末尾,可以使用 += 达到相同效果, a_list += another_list
    - a_list.insert(index, 新元素):将新元素插入列表指定位置,若index的值大于列表长度,则将新元素插入列表末尾
    - del a_list[index]:删除指定位置的元素,index的值必须小于列表长度
    - del不是函数,而是Python语句,是赋值语句(=)的逆过程,它将变量和值之间的绑定解除
    - a_list.remove(元素):删除指定值的元素
      a_list = [‘a‘, ‘b‘, ‘c‘]
      a_list.remove(‘b‘)
      print(a_list) # -> [‘a‘, ‘c‘]
    - a_list.pop(index):弹出指定位置的元素,index默认为-1
    - a_list.index(元素):如果列表中存在指定元素,则返回该元素的索引
    - 使用 in 判断某列表中是否存在某值,若存在,返回True,若不存在,返回False
    - a_list.count(元素):返回元素中某元素出现的次数
    - a_list.sort():列表排序,默认为升序,通过添加参数 reverse=True 可以改变为降序排列
    - a_list.copy():返回一个不同内存地址但列表值相同的新列表,浅拷贝,只能拷贝一层内容,对于嵌套列表的内存地址不做改变

  - 列表修改问题
    - 示例:
      a = [1, 2, 3] # -> 创建新列表
      b = a # -> 让b和a指向同一内存地址
      b[1] = "a" # -> 通过b修改列表中第二个元素
      print(a) # 输出[1, ‘a‘, 3],由于指向同一内存,因此对b的修改同样会影响到a

  - 可以通过copy()函数、list()转换函数和[:]分片生成新的不同内存地址的列表,如此对新列表的修改就不会影响到旧列表的内容

## tuple 元组
  - 使用()或者tuple()创建元组
  - 元组可以看作不可更改的列表
  - 相对而言,元组比列表占用的空间少
  - 元组特性和列表基本相同,但不能使用更改元素内容的相关函数,例如append()、insert()等
  - 创建注意事项
    - 若元组内只有一个元素,在元素后需要有一个逗号表示这是一个元组
    - 也可以不用括号创建,但需要在元素后需要有一个逗号表示这是一个元组
      a = 1,
      print(type(a)) # -> <class ‘tuple‘>

## dict 字典
  - 一种组合数据,没有顺序,数据以键值对的形式出现
  - 创建: d = {} 或者 d = dict()
    d = {
      key1: value1,
      key2: value2,
      ...
      key_n: value_n
    }

  - 特性
    - 字典是序列类型,但是是无序序列,所以没有索引和切片
    - 字典中的所有数据都是键值对
    - key必须是可哈希的数值,比如int str, float, tuple等,但是list, set, dict等不行
    - value可以是任何值
    - 删除: del dic[key] # -> 删除整个键值对

  - 相关函数
    - d.keys():返回字典的键
    - d.values():返回字典的值
    - d.items():以列表的格式返回字典数据
      d = {
        "Name": "Stanley",
        "Age": 22
      }
      print(d.items()) # -> dict_items([(‘Name‘, ‘Stanley‘), (‘Age‘, 22)])
    - d.clear():清空
    - d.get(key[, 默认值]):根据制定键,返回相应值,好处是可以设置默认值,若参数key在字典中不存在,则不会报错,而是返回传入的默认值
    - dict.fromkeys():使用指定的序列作为键,使用一个值作为字典的所有键的值
      a_list = [1, 2, 3, 4]
      d = dict.fromkeys(a_list, "LOVE")
      print(d)  # -> {1: ‘LOVE‘, 2: ‘LOVE‘, 3: ‘LOVE‘, 4: ‘LOVE‘}

# set 集合
  - 集合是高中数学中的一个概念
  - 一堆确定的无序的唯一的数据
  - 同样可以使用大括号定义,但大括号内必须有值

  - 特征:
    - 集合内数据无序,即无法使用索引和切片
    - 集合内部数据具有唯一性,可以用来排除重复数据
    - 集合内的数据,str, int, float, tuple等可哈希的数据
    - 集合本身不可哈希

  - 函数:
    - s.add():向集合中添加元素
    - s.clear():清空集合(原集合操作)
    - s.copy():浅拷贝
    - s.remove(值):移除指定值,若集合中没有该值会报错
    - s.discard(值):移除指定值,若集合中没有该值不会报错
    - s.pop():随机弹出集合中的一个值,没有参数
    - s1.intersection(s2):交集
    - s1.difference(s2):差集
    - s1.union(s2):并集
    - s1.issubset(s2):检查集合s1是否是集合s2的子集
    - s1.issuperset(s2):检查集合s1是否是集合s2的超集

  - 集合的数学操作
    s1 = {1, 2, 3}
    s2 = {2, 3, 4, 5}
    s3 = s2 - s1
    print(s3) # -> {4, 5}

  - frozen set 冰冻集合
    - 冰冻集合就是不可以进行任何修改的集合
    - 创建:s = frozenset()
    - 这是一种特殊的集合,具备除了修改外集合的所有特性

## list, tuple, dict, set 都可以使用推导式生成
  - 列表推导式格式:[ expression for item in iterable if condition],if过滤条件可以省略,该格式同样适用于tuple和set,但中括号需要分别修改为()和{}
    a_list = [n for n in range(1, 10) if n % 2 == 0]
    print(a_list) $ -> [2, 4, 6, 8]
  - 字典推导式格式:{ key_expression : value_expression for expression in iterable }
    a_list = [n for n in range(1, 5)]
    b_list = ["a", "b", "c", "d"]
    c_dict = {k: b_list[k - 1] for k in a_list}
    print(c_dict) # -> {1: ‘a‘, 2: ‘b‘, 3: ‘c‘, 4: ‘d‘}

本文参考书籍:[美]Bill Lubanovic 《Python语言及其应用》

原文地址:https://www.cnblogs.com/hycstar/p/9245661.html

时间: 2024-10-07 01:13:52

Python容器--list, tuple, dict, set的相关文章

Python中list,tuple,dict,set的区别和用法

Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定义一个空的List: L = [] Python中的List是有序的,所以要访问List的话显然

list,tuple,dict,set常用方法

Python中list,tuple,dict,set常用方法

Python中内置数据类型list,tuple,dict,set的区别和用法

Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. (原链接:http://www.jb51.net/article/76339.htm) List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: ? 1 L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定

Python中的list,tuple,dict和set

List list的创建与检索 Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 构造list非常简单,直接用 [ ] 把list的所有元素都括起来,就是一个list对象. Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据: 例如: >>> L = ['Michael', 100, True] list索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索

python:为什么Tuple操作速度比List快

Dive into python中说道Tuple是不可变的List,一旦创建了一个Tuple,就不能以任何方式改变它.但是Tuple 比 list 操作速度快.如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list. 我写了几行代码测试了一下: example_list=list() for i in range(0,500,1): example_list.append(i) example_tuple=tuple(example_list) star

python入门14 字典dict

字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字典 """ '''dict 无序的key:value组合 key要是不可变类型,如数字.字符串.元组 key不可重复,重复的会被最后一个覆盖 ''' dict_id = {'1':'python','2':'java','3':'javascript','4':'go','2':

python获取两个dict的不同

参数: dict1, dict2 需求:如果dict1和dict2中有不同的key,那么返回这个(key, dict1[key]):如果dict1和dict2中有相同的key,但是value不同,返回这个(key, dict1[key]) 实现: def dict_different_data(first, second): """ get the different data bewtten two dicts objects return :result = first

Python之创建tuple和“可变”的tuple

Python之创建tuple tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里同学的名称,用tuple表示如下: >>> t = ('Adam', 'Lisa', 'Bart') 创建tuple和创建list唯一不同之处是用( )替代了[ ]. 现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法.所以,新同学没法

一入python深似海--dict(字典)的一种实现

下面是python中字典的一种实现,用list数据结构实现字典.具体是这样的:[[(key1,value1),(key2,value2),...],[],[],...] 内部每一个hash地址是一个list,存放hash地址相同的(key,value)对. dict代码 def Map(num_buckets=256): """Initializes a Map with the given number of buckets.""" aMap