> 文档中心 > 【python】列表, 元组, 集合以及字典的常见用法

【python】列表, 元组, 集合以及字典的常见用法


python 列表, 元组, 集合以及字典的常见用法

文章目录

  • python 列表, 元组, 集合以及字典的常见用法
    • 列表操作
      • 嵌套列表操作
    • 元组操作
    • 集合操作
    • 字典操作
    • 附加
      • lambda表达式
      • reduce函数

列表操作

  • 列表是python常见的数据类型, 使用[]括起来, 类似于其他语言的数组类型, 其中list为python关键字

  • 根据索引访问 (注意索引是以0开始); 比如:list[0]

  • 遍历输出列表: 使用for..in循环

    lis1 = [2, 3, 'k','ab', 'adv']for i in lis1:    print(i)

    或者

    lis1 = [2, 3, 'k','ab', 'adv']for i in range(len(lis1)):    print(lis1[i])
  • len(list) : 统计列表长度的方法

  • list.append(obj) : 往列表添加元素

  • list.copy() : 复制列表

  • list.clear() : 清空列表

  • list.reverse(): 反向排列表中的元素

  • list.extend(seq) :在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

  • list.sort( key=None, reverse=False) : 对原列表进行排序

  • list.remove(obj)] : 移除列表中某个值的第一个匹配项

  • list.pop([index=-1]) : 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

  • list(seq):元组转换为列表

  • list.count(obj) : 统计某个元素在列表中出现的次数

  • list.index(obj) : 从列表中找出某个值第一个匹配项的索引位置

  • list.insert(index, obj) : 将对象插入列表

  • list.pop([index=-1]) : 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

嵌套列表操作

  • 嵌套列表是指列表中有列表, 他们之间相互嵌套

  • 比如 : [2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']

  • 访问多层嵌套列表, 更多维数组一样, 比如:lis[1][5]

  • 遍历输出嵌套列表:

    • 使用简单的for..in循环, 你会发现只能访问到第一层列表的内容, 列表中的列表将会以列表的形式出现, 而不是单个元素出现
    lis1 = [2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']# 循环遍历输出嵌套列表# 使用递归def bianli(li):    for i in range(len(li)): if isinstance(li[i],list):     bianli(li[i]) else:     print(li[i])bianli(lis1)
  • 修改嵌套列表中的值

    lis1 = [2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']print(lis1)# 修改嵌套列表中的值def traverse(li, str1, str2):  # 第一个参数传列表, 第二个参数传列表中要替换的字符串, 第三个参数传更改后的字符串    for i in range(len(li)): if isinstance(li[i], list):  # 判断是否为列表     traverse(li[i], str1, str2)  # 递归调用 elif li[i] == str1:     li[i] = str2traverse(lis1,3,"三")  # 将列表中含有3的值修改为三print(lis1)

元组操作

  • 元组与列表相似, 但元组是不能修改的, 使用()括起来, 其中tuple为关键字

  • 访问元组: 使用元组名[]是形式访问

    tup = ("123",123)print(tup[0])
  • 元组的值是不能修改和删除的, 但可以进行连接组合

    tup1 = ("123",123)tup2 = (1,2,3)tup = tup1+tup2print(tup)
  • 删除元组 : del 元祖名

  • tuple(iterable) 将可迭代系列转换为元组。

    lis = [1,2,3,4,5]tup = tuple(lis)print(tup)

集合操作

  • 集合(set)是一个无序的不重复元素序列。其中set为关键字
  • 创建集合的方式:
    • 第一种 : 直接大括号{}创建集合, 大括号内必须有值来初始化集合; 注意:创建一个空集合必须用 set() 方法而不是 { },因为 { } 是用来创建一个空字典。
    • 第二种 : set()方法创建集合
fruit1 = {"apple", "banana","orange"}fruit2 = set() # 创建空集合fruit2.add("apple") # 往集合添加元素print(fruit1)print(fruit2)
  • 判断元素是否在集合内 : v in s, 返回布尔值

    fruit1 = {"apple", "banana","orange"}print("apple" in fruit1)
  • union() : 返回两个集合的并集 set.union(set1, set2...)

    set1 = {1,2,3,4}set2 = {3,4,5,6}set3 = set1.union(set2)print(set3)
  • 求差集: set.difference(set)

    x = {"apple", "banana", "cherry"}y = {"google", "microsoft", "apple"} z = x.difference(y) 
  • 求交集 : set.intersection(set1, set2 ... etc)

    x = {"apple", "banana", "cherry"}y = {"google", "runoob", "apple"}z = x.intersection(y)  print(z)
  • 添加元素 : add()

  • 删除元素 : remove()

  • 随机删除元素 : pop()

fruit1 = {"apple", "banana","orange"}fruit1.add("pear")fruit1.remove("apple")fruit1.pop()print(fruit1)

字典操作

  • 字典是另一种可变容器模型,且可存储任意类型对象。其中 dict 为python的关键字

  • 使用{}括起来, 和集合不同的是, 字典需要键值对形成一对元素

    • 键值对 : key : value
  • 创建字典 :

    dic = {}  # 创建空字典print(type(dic)) # 输出类型dic2 = {"name" : "张三", "age":100,"height":120}print(dic2)

    输出 :

    {'name': '张三', 'age': 100, 'height': 120}
  • 修改字典, 通过拿到key来修改value, 若没有对应的key则会自动新增一项

    dic2 = {"name" : "张三", "age":100,"height":120}dic2["age"] = 18dic2["sex"] = "男"  # 新增一项, 即添加性别项print(dic2)
  • 删除字典元素或清空字典

    • 删除一个字典 : del 字典名
    • 清空字典 : 字典名.clear()
  • 字典键的唯一性: 不允许同一个键(key)出现两次, 值(value)可以重复, 键(key)不能重复

    • 键必须不可变,所以可以用数字,字符串或元组充当(因为他们都不可变),而用列表就不行, 因为列表是可变的
  • 字典复制 : dict.copy()

  • dict.keys() : 返回所有键的集合

  • dict.value() : 返回所有值的集合

  • dict.items() : 返回所有键值对的合集

dic = {"及时雨":"宋江","易大师":"剑圣","维恩":"暗影猎手",1:1,2:1}print(dic.keys())#拿到所有的key,返回key的集合.像是列表.但不是列表print(dic.values()) # 拿到所有的value,返回value的合集print(dic.items()) # 拿到所有键值对
  • 查找键对应的值 : dict.get(key)
  • 删除对应的键值对 : dict.pop(key)
dic = {"及时雨":"宋江","易大师":"剑圣","维恩":"暗影猎手"}print(dic.get("及时雨")) # 通过key拿到value值dic.pop("维恩") # 删除对应的键值对, pop里面的参数只能是key, 不能是valueprint(dic)
  • 遍历字典

    dic = {1:'a',2:'b',3:'c'}# 遍历输出键for k in dic.keys():    print(k)# 遍历输出值for v in dic.values():    print(v)# 遍历输出键或者值for k,v in dic.items():#只有键值对才能解包,解构    print(k,v)#打印key    print(dic[k])#打印vaule# 或者for item in dic.items():    print(item) # 以元组形式输出键值对    print(item[0]) #打印key    print(item[1]) #打印vaule
  • 嵌套字典

    dic = {    "name ":"张三",    "age": 29,    "wife": {"name": "王六",     "salay": 18000,     "age" : 27 },    "children":[ {"name":"老大","age":6}, {"name":"老二","age":3}    ]}print(dic)print(dic["children"][1]["age"])#找出二儿子的年龄print(dic["wife"]["salay"])

附加

lambda表达式

  • 匿名函数(顾名思义就是没有名字的函数), 使用lambda创建匿名函数
  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
  • 表达式用法 : lambda 参数 : 执行方法
# 使用匿名函数来求和sum1 = lambda a, b : a+bprint(sum1(1,2))# 将匿名函数封装在一个函数内def sum2():    return lambda a,b:a+bc = sum2()print(c(1,2))

reduce函数

  • reduce() 函数会对参数序列中元素进行累积。
  • 语法 : reduce(function, iterable[, initializer])
    • function – 函数名
    • iterable – 可迭代对象
    • initializer – 可选,初始参数
  • 举个例子: 累乘操作
from functools import reduce# 计算累乘def factorial(m, n):    return m*nmult1 = reduce(factorial, [1,2,3,4,5])print(mult1)# 使用匿名函数mult2 = reduce(lambda m,n:m*n,[1,2,3,4,5])print(mult2)
  • reduce方法是对元素进行累积操作, 对上述的例子就是在1和2做乘积的结果上再与3相乘, 与此类推, 最后把列表中的数都运算完

注意 : Python3以上的reduce() 已经被移到 functools 模块里,如果要使用,必须引入 functools 模块来调用 reduce() 函数:

【python】列表, 元组, 集合以及字典的常见用法