set集合:
本质上也是一个无序的集合,类似字典,但是只存储了字典中的key,没有存储字典中的value。
1.set集合中元素也是唯一的
2.set集合中元素也是不可改变的
创建set集合:
set1 = set() #创建空的set集合
set2 = {1,2,3} #创建一个具有元素的set集合
set3 = set([]) #创建set集合
set1.add(else)
功能:向set1中添加元素
注意:当添加元素与set集合中元素出现重复的时候,不会有任何效果,但并不报错。添加的元素必须是不可变类型的,如添加可变元素则会报错。
set1 = {1}
set1.add("hello") #{1, 'hello'}
set1.update(序列)
功能:将序列中的元素打碎插入到set1中
注意:使用update函数的时候,其参数一定是序列
set = {1}
set1.update("hello") #{1, 'e', 'o', 'h', 'l'}
set1.remove(ele)
功能:将指定元素移出
set1 = {1,2,3}
set1.remove(1)
print(set1) #{2, 3}
set集合的遍历
for x in set1:
pass
for x in set1:
print(x)
#1
#2
#3
set1 & set2 获取集合的交集(两个集合重叠的部分)
set1 | set2 获取集合的并集(两个集合的所有元素去除重叠的部分)
set1 = {1,2,3,4,5,6}
set2 = {4,5,6,7,8,9}
print(set1 & set2) #{4, 5, 6}
print(set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
类型转换:
list1 = [1,2,3,4]
tuple1 = (“a”,“b”,“c”,“d”)
set1 = {“I”,“II”,“III”,“IV”}
dict1 = {“1”:“hello”,“2”:“hi”,“3”:“haha”,“4”:“heihei”}
将其它的数据类型转为list
print(list(tuple1)) #['a', 'b', 'c', 'd']
print(list(set1)) #['II', 'I', 'IV', 'III']
#将字典使用list转换的时候,只转换了key没有转换value
print(list(dict1)) #['1', '2', '3', '4']
将其它的数据类型转为tuple
print(tuple(list1)) #(1, 2, 3, 4)
print(tuple(set1)) #('II', 'I', 'IV', 'III')
#只转换了key
print(tuple(dict1)) #('1', '2', '3', '4')
将其它的数据类型转为set
print(set(tuple1)) #{'c', 'b', 'a', 'd'}
print(set(list1)) #{1, 2, 3, 4}
#只转换了key
print(set(dict1)) #{'3', '4', '1', '2'}
将其它的数据类型转为字典
当列表为二维列表,并且二维列表的元素是成对的,也是就说二维列表的元素只有两个
的情况下,是可以进行转换的
print(dict([(1,(1233,22)),[2,3]])) #{1: (1233, 22), 2: 3}
print(dict(((1,2),(2,3)))) #{1: 2, 2: 3}
print(dict({(1,2),(3,4)})) #{1: 2, 3: 4}
3、列表生成式
本质上就是将for循环强制写在一行,把结果写在for循环的最前面,然后使用[]括起来,得到的就是一个有结果集组成的一个列表。
使用一行代码打印list = [1,2,3,4…100]
print(list(rang(1,01)))
使用一行代码实现list = [1,4,9,16,25,…10000]
print([ x*x for x in range(1,101) if x%3])
可迭代对象:
能直接作用于for循环的对象我们统称为可迭代对象
常见的可迭代对象:
1.list,set,dict,tuple, str, range
2.生成器:一边循环一边计算的这种机制我们称之为生成器(可以不断推算下一个元素)
注意:生成器只能迭代一边
生成器的优点:节省内存空间
创建生成器:
list1 = [result for x in range(m,n)]
g1 = (result for x in range(m,n))
迭代器:
不但能够作用于for循环,还可以被next函数调用,不断返回下一个值,这样的对象我们就称之为迭代器。
可以通过iter()函数将可迭代对象转为迭代器
isinstance(object,type)
判断某个对象是否属于某种类型
from collections import Iterator
g = (x for x in range(10))
print(isinstance(g,Iterator)) #True
迭代器与可迭代对象的关系:
迭代器一定是可迭代对象,可迭代对象不一定是迭代器