python之路05

一  元组

 对于元组我们可以把他看成一个不可变的列表
# 元组:在()内用逗号分隔开的能够存多个值,对于元组来说列表有的一些功能它基本上都有,
# 1、按索引取值(正向取+反向取):只能取
# 2、切片(顾头不顾尾,步长)
# 3、长度
#4、成员运算in和not in
#5、循环
# age=(11,22,33,44,55,66,77,88,99,90)对于元组来说他相当于就是age=tuple(11,22,33,44,55,66,77,88,99,90)
#按照索引取值:
# age=(11,22,33,44,55,66,77,88,99,90)
# print(age[0])
# 同样可以正向或者反向取,但是有一点就是元组只能取,而不能改。
#tuple可以作为一种操作:
# s='dfdkfkfugg'
# t=tuple(s)#可以将字符串转换成元组,在这个循环的过程实际上是一个循环的过程,把字符串中的字符一个一个转换成tuple的形式放到元组中去。

总结:可存多个元素,元素不可变。

二  字典

 字典能够存多个值,但是是以key—value的形式存取,key与value在字典中是一个映射关系,通过key来取值,速度快。
# info={'name':'james','sex':'female','age':33}
# 在这个过程中,本质上来说相当于:
# info=dict({'name':'james','sex':'female','age':33})的一个过程。
# 等于info=dict(name='james',sex='female',age=33)
# 等于info=dict(['name':'james'],['sex':'female'],['age':33])
# 等于{}.fromkeys(('name','sex':,'age'),None)
# 那么对于字典中的key是不可变的,对于value是可变的。

 2.1  字典的存取值

按key存取值
# dic={'nike':500,'anta':100,'lining':200,'name':'james'}
# info=dic['nike']#将‘nike’所对应的值取出来
# l=dic.get('fg',None)#从字典中取键值,get的好处就是,即使输入错误的键值,程序不会报错,只是不能取到键值。
# for item in dic:
#   print(dic[item])#如果想取出键,则直接打印item。若想打印出键值则打印dic[item]
#   print(item,dic[item])#取出键值对
# print(dic.keys())#以dict_keys(['nike', 'anta', 'lining', 'name'])的形式输出字典的key值。
# print(dic.values())#以dict_values([500, 100, 200, 'james'])形式输出字典的values。
# print(dic.items())##以dict_items([('nike', 500), ('anta', 100), ('lining', 200), ('name', 'james')])的形式输出键值对。

  2.2  循环与删除

#那么在字典中,删除字典里面的内容我们可以用pop和del
#当然首选pop

# print(dic.pop('nike'))#pop会根据输入的键弹出对应的values,同时可以取出弹出的values


#循环
# 那么同样的我们可以按照循环来取出字典中的键值对
# for item in dic:
#   print(dic[item])#如果想取出键,则直接打印item。若想打印出键值则打印dic[item]
#   print(item,dic[item])#取出键值对,同时将键值取出。

#那么同样是同时将键值对取出:
1 #
# for item in dic:
       # print(item,dic[item])

 # 2
# #print(dic.items())
 ##取出来的形式不同

三  集合

# st1={'1','2','3','4'}
# 集合:可以包含多个元素,用{}括起来的,用逗号分割。
# 集合的元素遵循三个原则:
# 1:每个元素必须是不可变类型(可hash,可作为字典的key)这一点与元组是一样的。
# 2:没有重复的元素,所以集合又具有去重的功能。
# 3:无序,所以对于集合的取值不能按照索引来取值。
# 集合的运算
# 集合的运算分为:
# 交集
1#
# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# print(st1&st2)
2#
# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# st1.intersection(st2)
# print(st1.intersection(st2))

#并集
1#
# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# print(st1|st2)
2#
# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# print(st1.union(st2))

# 交叉补集
# 1#
# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# print(st1^st2)
# 2#
# print(st1.symmetric_difference(st2))

# 差集
# 1#
# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# print(st1-st2)
# print(st2-st1)
# 2#
# print(st1.difference(st2))
# print(st2.difference(st1))

# 父集与子集
# 父集与子集是一个相对应的关系,

# st1={'1','2','3','4'}
# st2={'1','2',}
# 那么这个时候就说st1是st2的父集,
# 相对应的st2就是st1的子集

# st1={'1','2','3','4'}
# st2={'1','5','7','8'}
# # print(st1&st2)
# # print(st1|st2)
# # print(st1-st2)
# # print(st2-st1)
# print(st1^st2)
# st1={'1','2','3','4'}
# st2={'1','2','3','4'}
# print(st1>=st2)
# print(st1<st2)


# 集合去重:
# 集合去重的原理就是,集合中不能含有重复的元素
# # 现在我们定义一个列表:
# l=['1','2','sd','er','a','a','1']
# st=set(l)
# print(st)
# # 输出结果为:可以看出输出的顺序没有按照列表的顺序,因为集合是无序的。而重复的部分被去除
# {'sd', 'er', 'a', '1', '2'}

#那么我们如何实现在不改变列表中的顺序的情况下去重呢

1#
# l=['1','2','sd','er','a','a','1']
# st=set()
# l1=[]
# for item in l:
#     if item not in st:
#         l1.append(item)
# print(l1)

2#
# l1=[]
# for item in l:
#     if item not in l1:
#         l1.append(item)
# print(l1)
原文地址:https://www.cnblogs.com/zhangsanfeng/p/8620046.html