zoukankan      html  css  js  c++  java
  • 4、字典和元祖

    一、请指出下面那些为可变类型的数据,那些为不可变类型的数据

    1、 (11)    

    2、 {11,22}

    3、 ([11,22,33])

    4、 {"aa":111}

    二、当前有一个列表 li = [11,22,33,22,22,44,55,77,88,99,11],

     要求一:去除列表中的重复元素,

     要求二:删除 77,88,99这三个元素

    三、有下面几个数据 ,

    t1 = ("aa",11)      t2= (''bb'',22)    li1 = [("cc",11)]

    请通过学过的知识点,进行相关操作变为如下字典: {"aa":11,"cc":11,"bb":22}

    要注意字典中元素的位置(使用python3.5以下的同学不用考虑位置)

    # TODO:一、请指出下面那些为可变类型的数据,那些为不可变类型的数据
    """
    1、 (11)
    2、 {11,22}
    3、 ([11,22,33])
    4、 {"aa":111}
    """
    # TODO 可变数据类型:列表、字典、集合 不可变数据类型:字符串、int型、float型、元祖
    # TODO 1.为int型,为不可变数据类型 2.为集合,可变数据类型 3.为列表,因为少一个,才会是元祖,可变数据类型 4.为字典,可变数据类型
    a = "1为不可变数据类型,2、3、4为可变数据类型"
    print("~" * 25, "请指出下面那些为可变类型的数据,那些为不可变类型的数据", "~" * 25)
    print("答案:{}".format(a))
    print()

    # TODO 二、当前有一个列表 li = [11,22,33,22,22,44,55,77,88,99,11],
    # 要求一:去除列表中的重复元素,
    # 要求二:删除 77,88,99这三个元素
    print("~" * 25, "要求一:去除列表中的重复元素", "~" * 25)
    # 方法1 集合去重
    li = [11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
    set_li = set(li) # 将列表转化为集合
    list_li = list(set_li) # 将集合转换为列表
    list_li.sort() # 排序与其他方法比较结果
    print("集合去重:{}".format(list_li))

    # 方法2 肉眼找出重复的使用列表删除方法
    li = [11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
    li.pop(0)
    li.pop(0) # TODO:此处注意删除一次索引值,索引已经发生变化了。
    li.pop(1)
    li.sort()
    print("pop去重:{}".format(li))

    # 方法3 使用切片去除重复的,并将列表相加
    li = [11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
    new_li = li[0:3] + li[5:10]
    new_li.sort()
    print("切片正索引去重:{}".format(new_li))

    # 方法4 使用切片去除重复的,并将列表相加
    li = [11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
    new_li = li[-1:-7:-1] + li[-9:-11:-1]
    new_li.sort()
    print("切片负索引去重:{}".format(new_li))

    # 方法5 重新赋值
    li = [11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
    li = [33, 22, 44, 55, 77, 88, 99, 11]
    li.sort()
    print("重新赋值去重:{}".format(li))

    print()
    print("~" * 25, "# 要求二:删除 77,88,99这三个元素", "~" * 25)
    # 方法1使用列表pop删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    li.remove(77)
    li.remove(88)
    li.remove(99)
    li.sort()
    print("remove删除 77,88,99这三个元素:{}".format(li))

    # 方法2使用列表pop删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    li.pop(4)
    li.pop(4) # 注意删除上一个索引值,列表已变化,需重新数索引值
    li.pop(4)
    li.sort()
    print("pop正索引删除 77,88,99这三个元素:{}".format(li))

    # 方法3使用列表pop删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    li.pop(-2)
    li.pop(-2) # 注意删除上一个索引值,列表已变化,需重新数索引值
    li.pop(-2)
    li.sort()
    print("pop负索引删除 77,88,99这三个元素:{}".format(li))

    # 方法4使用列表del删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    del li[4]
    del li[4] # 注意删除上一个索引值,列表已变化,需重新数索引值
    del li[4]
    li.sort()
    print("del正索引删除 77,88,99这三个元素:{}".format(li))

    # 方法5使用列表del删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    del li[-2]
    del li[-2] # 注意删除上一个索引值,列表已变化,需重新数索引值
    del li[-2]
    li.sort()
    print("del负索引删除 77,88,99这三个元素:{}".format(li))

    # 方法6使用列表切片删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    new_li = li[:4] + li[-1:-2:-1]
    new_li.sort()
    print("切片正索引删除 77,88,99这三个元素:{}".format(new_li))

    # 方法7使用列表切片删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    new_li = li[-5::-1] + li[-1:-2:-1]
    new_li.sort()
    print("切片负索引删除 77,88,99这三个元素:{}".format(new_li))

    # 方法8使用循环删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    new_li = []
    a = len(li)
    for i in range(a):
    if li[i] != 77 and li[i] != 88 and li[i] != 99:
    new_li.append(li[i])
    new_li.sort()
    print("循环判断删除 77,88,99这三个元素:{}".format(new_li))

    # 方法9使用列表切片删除
    li = [22, 33, 44, 55, 77, 88, 99, 11]
    li = [ 22, 33, 44, 55, 11]
    li.sort()
    print("重新赋值删除 77,88,99这三个元素:{}".format(li))

    # 如果不排序,怎么利用索引删除呢,先找到索引然后用pop去删除
    # index_77 = li.index(77)
    # li.pop(index_77)


    # TODO 三、有下面几个数据 ,
    # t1 = ("aa",11) t2= ("bb",22) li1 = [("cc",11)]
    # 请通过学过的知识点,进行相关操作变为如下字典: {"aa":11,"cc":11,"bb":22}
    # 要注意字典中元素的位置(使用python3.5以下的同学不用考虑位置)

    # 题目数据类型有元祖、列表,结果要是字典
    # 首先将元祖变为列表,方便后续key、value提取值
    t1 = ("aa", 11)
    t2 = ("b", 22)
    list_t1 = list(t1)
    list_t2 = list(t2)
    # TODO 其次将包含元祖的列表变成列表
    li1 = [("cc", 11)]
    a = []
    for item in li1:
    # print(item) # 结果为('cc', 11),提取列表中元素
    for i in item:
    a.append(i) # 提取元祖中元素,添加到空列表中
    # print(a) # 打印['cc', 11],检查列表
    # 最后定义一个空字典,通过键值对新增元素
    my_dict = dict()
    my_dict[list_t1[0]] = list_t1[1]
    my_dict[a[0]] = a[1]
    my_dict[list_t2[0]] = list_t2[1]
    print()
    print("~" * 25, "相关操作变为如下字典", "~" * 25)
    print("最终字典:", my_dict)


    # 方法2将列表、元祖 变成字典,键值对从列表元祖取值添加进去
    t1 = ("aa", 11)
    t2 = ("b", 22)
    li1 = [("cc", 11)]

    my_dict = {}
    my_dict[t1[0]] = t1[1]
    my_dict[li1[0][0]] = li1[0][1]
    my_dict[t2[0]] = t2[1]
    print(my_dict)

    # 方法3
    t1 = ("aa", 11)
    t2 = ("b", 22)
    li1 = [("cc", 11)]
    my_tuple = (t1,li1[0],t2)
    print(dict(my_tuple)) # {'aa': 11, 'cc': 11, 'b': 22}

    # dict 构造函数
    # todo 它只可以输入一个 参数,其他的要用关键字参数。详细点进dict看源码

    # 只需要往里面传入序列类型
    # [(key,value),(key,value)]
    # ((key,value),(key,value))
    # 就可以将序列类型变成字典
  • 相关阅读:
    利用自定义分页技术提高数据库性能
    solr深分页,游标操作分页,解决性能问题
    Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)
    Selenium2+python自动化53-unittest批量执行(discover)
    Selenium2+python自动化52-unittest执行顺序
    Selenium2+python自动化51-unittest简介
    Fiddler抓包2-只抓APP的请求
    selenium3+python自动化50-环境搭建(firefox)
    Selenium2+python自动化49-判断文本(text_to_be_present_in_element)
    Selenium2+python自动化47-判断弹出框存在(alert_is_present)
  • 原文地址:https://www.cnblogs.com/little-lucky/p/12989565.html
Copyright © 2011-2022 走看看