1.集合定义:不同元素组成,元素都是无序的,元素是不可变类型/可哈希类型(可作为字典的键)(数字、字符串、元组),去重特性

定义方式:大括号&逗号 {1,2,3,4}

s = set(可迭代类型)

s = set('hello')
print(s)

s = set(['cyx', 'cyx', 'gb'])
print(s)

补:type()查看类型

集合的分类 

可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其它集合的元素

不可变集合(frozenset):不 可添加和删除元素

集合等价与不等价

print(set('cyx') == set('ypp'))
print(set('cyx') != set('ypp'))

2.集合的内置方法

a.add 添加

s = {1, 2, 3, 4}
s.add('s')
print(s)

b.clear 清空

s = {1, 2, 3, 4}
s.clear()
print(s)

c.copy 拷贝

d.pop随机删

s = {1, 2, 3}
p = s.pop()
print(s)
print(p)

remove指定删,删除元素不存在会报错

del可以删除任何东西

s = {1, 2, 3}
del s
print(s)#会报错

discard指定删,删除元素不存在时,不会报错

s = {'s', 1, 2, 3, 4}
s.pop()
print(s)
s = {'l', 1, 2, 3, 4}
s.remove('l')
print(s)
s = {'l', 1, 2, 3, 4}
s.discard('l0')
print(s)

e.求交集

用for循环求交集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw']
python_linux_l = []
for i in python_l:
if i in linux_l:
python_linux_l.append(i)
print(python_linux_l)

intersection求交集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.intersection(l_s))

a & b求交集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s & l_s)

f.求并集

union求并集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.union(l_s))

|求并集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s | l_s)

g.求差集

difference求差集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.difference(l_s))#in p_s but not in l_s

-求差集

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s - l_s)

h.交叉补集/对称差集/反向交集 :先合到一起,在减去共有的

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.symmetric_difference(l_s))
python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s ^ l_s)

i.difference_update求完差集后更新

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
p_s.difference_update(l_s)
print(p_s)

j.isdisjoint 判断是否不相交

python_l = ['lcg', 'szw', 'zjw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.isdisjoint(l_s))

k.判断是否是子集

python_l = ['lcg', 'szw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.issubset(l_s))

print(set('cyx') < set('cyx'))

print(set('cyx') < set('cyxypp'))

l.判断是否是父集

python_l = ['lcg', 'szw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
print(p_s.issuperset(l_s))

也可以用>判断

m.update更新多个值,add只能更新一个值

s = {1, 2, 3}
s.update('cyx')#cyx会被当成序列一个一个添加而不是整体添加
print(s)
s = {1, 2, 3}
s.update([12, 'ypp'])
print(s)

python_l = ['lcg', 'szw']
linux_l = ['lcg', 'szw', 'cyx', 'ypp']
p_s = set(python_l)
l_s = set(linux_l)
p_s.update(l_s)
print(p_s)

n.集合是可变的,可以用frozenset定义不可变集合

s = frozenset('hello')
print(s)

o.set()可以简单去重,但是元素顺序会变

names = ['cyx', 'ypp', 'cyx']
s = set(names)
names = list(s)
print(names)

3.字符串格式化

a.百分号字符串拼接

msg = 'i am %s my hobby is reading' % 'cyx'
print(msg)
msg = 'i am %s my hobby is %s' % ('cyx', 'reading')
print(msg)

%s是万能的,可以接收任何值

%d代表整形数字,只能接收数字

msg = 'i am %(name)s age %(age)d' % {'name': 'cyx', 'age': 18}
print(msg)
msg = 'i am %(name)-60s age 18' % {'name': 'cyx'}
print(msg)
msg = 'i am %(name)+60s age 18' % {'name': 'cyx'}
print(msg)
msg = 'i am \033[45;1m%(name)+60s\033[0m age 18' % {'name': 'cyx'}
print(msg)

b.打印浮点数

msg = 'percent %f' % 99.976234
print(msg)
msg = 'percent %.2f' % 99.976234
print(msg)

 c.打印百分比

msg = 'percent %.2f %%' % 99.976234
print(msg)
msg = 'i am %(pp).2f' % {'pp': 123.45687}
print(msg)
print('root', 'x', '0', '1', sep=':')

 d.format字符串格式化

a = 'i am {}, age {}, {}'.format('cyx', 18, 'ypp')
print(a)

 不一一对应会报错

a = 'i am {}, age {}, {}'.format('cyx', 18)
print(a)

 按索引取值

a = 'i am {2}, age {1}, {0}'.format('cyx', 18, 'ypp')
print(a)
a = 'i am {1}, age {1}'.format('cyx', 18, 'ypp')
print(a)

 字典方式取值

a = 'i am {name}, age {age}, really {name}'.format(name='seven', age=18)
print(a)
a = 'i am {name}, age {age}, really {name}'.format(**{'name': 'seven', 'age': 18})
print(a)
a = 'i am {0[0]}, age {1[2]}, really {1[1]}'.format([1, 2, 3], [5, 6, 8])
print(a)
a = 'i am {:s}, age {:d}, really {:f}'.format('cyx', 12, 78.906)
print(a)
a = 'i am {:s}, age {:d}'.format(*['cyx', 12])
print(a)
a = 'i am {name:s}, age {age:d}'.format(name='seven', age=18)
print(a)
a = 'i am {name:s}, age {age:d}'.format(**{'name': 'seven', 'age': 18})
print(a)

 b二进制,o八进制,d整形,x十六进制,X十六进制(传大写的ABCD),%显示百分比(默认显示小数点后六位) 

tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
print(tpl)

 

 

 

 

 

 

 

 


posted on 2018-04-17 19:55  吃猫粮的狗  阅读(312)  评论(0编辑  收藏  举报