python基础_元组操作+字典操作+集合操作

元组书写格式

tu = (111,"alex",(11,22),[(33,44)],True,33,44,)

一般写元组的时候,推荐在最后加入 逗号

元素不可被修改,不能被增加或者删除

元组操作

1. 索引
v = tu[0]
print(v)

2. 切片
v = tu[0:2]
print(v)

3. 可以被for循环,可迭代对象
for item in tu:
    print(item)

4. 转换
s = "asdfasdf0"
li = ["asdf","asdfasdf"]
tu = ("asdf","asdf")

v = tuple(s)
print(v)
('a', 's', 'd', 'f', 'a', 's', 'd', 'f', '0')
v = tuple(li)
print(v)
('asdf', 'asdfasdf')
v = list(tu)
print(v)
['asdf', 'asdf']
v = "".join(tu)
print(v)
asdfasdf

5.元组的一级元素不可修改/删除/增加
元组,有序。
tu = (111,"alex",(11,22),[(33,44)],True,33,44,)
v = tu[3][0][0]
print(v)
v=tu[3]
print(v)
tu[3][0] = 567
print(tu)
33
[(33, 44)]
(111, 'alex', (11, 22), [567], True, 33, 44)

字典书写格式

info = {
    "k1": "v1", # 键值对
    "k2": "v2"
}

字典操作

1.字典的value可以是任何值
info = {
    "k1": 18, 
    "k2": True, 
    "k3": [11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22),}], 
    "k4": (11,22,33,44)}
print(info)
{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}

2.列表、字典不能作为字典的key
布尔值(True和False会与1和0重复导致无法显示)
同一个key,只能对应一个value,如果有两个相同的key,则会选择先输入的value
info ={
    1: 'asdf',
    "k1": 'asdf',
    True: "123",
    # [11,22]: 123
    (11,22): 123,
    # {'k1':'v1'}: 123
}
print(info)
{1: '123', 'k1': 'asdf', (11, 22): 123}
这里True不会显示,和1重复

True 1  False 0
info ={
    "k1": 'asdf',
    True: "123",
    # [11,22]: 123
    (11,22): 123,
    # {'k1':' v1'}: 123

}
print(info)
{'k1': 'asdf', True: '123', (11, 22): 123}

3.字典无序

info = {
    "k1": 18,
    "k2": True,
    "k3": [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22),}
    ],
    "k4": (11,22,33,44)
}
print(info)

4.索引方式找到指定元素
info = {
    "k1": 18,
    "k2": True,
    "k3": [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22),}
    ],
    "k4": (11,22,33,44)
}
v = info['k1']
print(v)
v = info['k3'][5]['kk3'][0]
print(v)
18
11

5.字典支持 del 删除
info = {
    "k1": 18,
    "k2": True,
    "k3": [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22),}
    ],
    "k4": (11,22,33,44)
}
del info['k1']
print(info)
del info['k3'][5]['kk1']
print(info)
{'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
{'k2': True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}

6.for循环
dict
info = {
    "k1": 18,
    "k2": True,
    "k3": [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22),}
    ],
    "k4": (11,22,33,44)
}
for item in info:
    print(item)
k1
k2
k3
k4

for item in info.keys():
    print(item)
k1
k2
k3
k4

for item in info.values():
    print(item)
18
True
[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
(11, 22, 33, 44)

for item in info.keys():
    print(item,info[item])
k1 18
k2 True
k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)

for k,v in info.items():
    print(k,v)
k1 18
k2 True
k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)

7.根据序列,创建字典,并指定统一的值
v = dict.fromkeys(["k1",123,"999"],123)
print(v)
{'k1': 123, 123: 123, '999': 123}

8.根据Key获取值,key不存在时,可以指定默认值(None)
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic['k1']
print(v)
v1
v = dic['k11111']
print(v)
报错
v = dic.get('k1',111111)
print(v)
v1
v = dic.get('k111111',111111)
print(v)
111111

9.删除并获取值
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.pop('k1',90)
print(dic,v)
{'k2': 'v2'} v1

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
k,v = dic.popitem()
print(dic,k,v)
{'k1': 'v1'} k2 v2

10.设置值
已存在,不设置,获取当前key对应的值
不存在,设置,获取当前key对应的值
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.setdefault('k1','123')
print(dic,v)
{'k1': 'v1', 'k2': 'v2'} v1

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.setdefault('k1111','123')
print(dic,v)
{'k1': 'v1', 'k2': 'v2', 'k1111': '123'} 123

11.更新
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
dic.update({'k1': '111111','k3': 123})
print(dic)
dic.update(k1=123,k3=345,k5="asdf")
print(dic)
{'k1': '111111', 'k2': 'v2', 'k3': 123}
{'k1': 123, 'k2': 'v2', 'k3': 345, 'k5': 'asdf'}

 集合操作

1.每个元素必须是不可变类型

2.不可重复

3.无序

s=set('hello')
print(s)
{'e', 'l', 'o', 'h'}
s=set(['alex','alex','sb'])
print(s)
{'alex', 'sb'}

s={1,2,3,4,5,6,'sb'}
1.添加
s.add('s')
2.清空
s.clear()
3.拷贝
s1=s.copy()
4.随机删
s.pop()
5.指定删除
s.remove('sb')
s.remove('hellol') #删除元素不存在会报错
s.discard('sbbbb')#删除元素不存在不会报错

python_l=['lcg','szw','zjw','lcg']
linux_l=['lcg','szw','sb']
p_s=set(python_l)
l_s=set(linux_l)
6.求交集
print(p_s,l_s)
print(p_s.intersection(l_s))
print(p_s&l_s)
7.求并集
print(p_s.union(l_s))
print(p_s|l_s)
8.求差集
print('差集',p_s-l_s)
print(p_s.difference(l_s))
print('差集',l_s-p_s)
print(l_s.difference(p_s))
9.求交叉补集
print('交叉补集',p_s.symmetric_difference(l_s))
print('交叉补集',p_s^l_s)
10.求差集更新
p_s=p_s-l_s
p_s.difference_update(l_s)
print(p_s)
11.判断是否有相同的元素
s1={1,2}
s2={2,3,5}
print(s1.isdisjoint(s2))
False
s1={1}
s2={2,3,5}
print(s1.isdisjoint(s2))
True
12.判断是否是子集
s1.issubset(s2)#s1 是s2 的子集
13.盘判断是否是父集
s2.issuperset(s1)#s2 是s1 的父集
14.更新多个值
s1={1,2}
s2={2,3,4,5}
 s1.update(s2)
print(s1)
{1, 2, 3, 4, 5}
s1.add(3) #更新一个值
s1.add(s2)#报错
s1.add(2,3,4,5)#报错
s1.update(2,3,4,5)#报错
15.不可变集合
s=frozenset('hello')

 

posted @ 2018-05-27 22:31  Liu呵呵  阅读(165)  评论(0)    收藏  举报