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))
# 就可以将序列类型变成字典
posted @ 2020-05-29 21:02  lucky_little  阅读(286)  评论(0编辑  收藏  举报