元祖tuple

与列表类似可以存多个值,但是不同的是元祖本身不能被修改

#一:基本使用:tuple
# 1 用途:记录多个值,当多个值没有改的需求,此时用元组更合适

# 2 定义方式:在()内用逗号分隔开多个任意类型的值
t=(1,1.3,'xx',('a','b'),[1,2]) #t=tuple((1,1.3,'xx',('a','b'),[1,2]))
print(t,type(t))
t1=tuple('hello')
print(t1)

# 3 常用操作+内置的方法
#优先掌握的操作:
#1、按索引取值(正向取+反向取):只能取
t=('egon',123,['a','b'])
print(id(t[0]))
print(id(t[1]))
print(id(t[2]))

t[2][0]='A'
print('='*50)
print(id(t[0]))
print(id(t[1]))
print(id(t[2]))
t[0]='EGON'

t[2]='xxxx'
t[2][0]='A'
print(t)

#2、切片(顾头不顾尾,步长)
t=(1,2,3,4,5)
print(t[0:3])
print(t)

#3、长度

#4、成员运算in和not in

#5、循环
for item in ('a','b','c'):
print(item)

# 需要掌握的操作
t=('a','b','c','a')
print(t.count('a'))
print(t.index('a',1,10))
print(t.index('xxx',1,10))

#二:该类型总结
# 1 存多个值
# 2 有序
# 3 不可变

字典dict

# 补充:
# 不可变类型=》可hash类型
# 可变类型 =》不可以hash类型

#一:基本使用dict
# 1 用途:记录多个值,每一个值都对应的key用来描述value的作用
#
# 2 定义方式:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型
dic={0:'aaa',1:'bbb',2:'cccc'} # dic=dict({0:'aaa',1:'bbb',2:'cccc'})
print(dic,type(dic))
print(dic[0])

dic={[1,2]:'aaa'}
dic={(1,2):'aaa'}
print(dic[(1,2)])

# 用法一:
dic=dict(x=1,y=2,z=3)
print(dic)

# 用法二:
userinfo=[
['name','egon'],
['age',18],
['sex','male']
]
d={}
for k,v in userinfo: # k,v=['name', 'egon']
# print(k,v)
d[k]=v
print(d)

# d=dict(userinfo)
# print(d)

# 3 常用操作+内置的方法
#优先掌握的操作:
#1、按key存取值:可存可取
dic={'name':'egon'}
print(dic['name'])
dic['name']='EGON'
print(dic)
dic['age']=18
print(dic)

#2、长度len
dic={'name':'egon','age':18,'name':'EGON','name':'XXXX'}
print(dic)
print(len(dic))

#3、成员运算in和not in:字典的成员运算判断的是key
dic={'name':'egon','age':18,}
print(18 in dic)
print('age' in dic)

#4、删除
dic={'name':'egon','age':18,}
# 通用
del dic['name']
print(dic)
del dic['xxx'] ##key不存在则报错

res=dic.pop('age') #删除key对应的value,并返回value
print(dic)
print(res) #
dic.pop('xxx') #key不存在则报错

res=dic.popitem()
print(dic)
print(res)

#5、键keys(),值values(),键值对items() 注意python2与python3之间的区别
dic={'name':'egon','age':18,}
print(dic.keys())
l=[]
for k in dic.keys():
l.append(k)
print(l)
print(list(dic.keys()))
print(dic.values())
print(list(dic.values()))
print(dic.items())
print(list(dic.items()))

#6、循环
dic={'name':'egon','age':18,'sex':'male'}

for k in dic.keys():
print(k,dic[k])

for k in dic:
print(k,dic[k])

for v in dic.values():
print(v)

for k,v in dic.items():
print(k,v)

#8 dic.get()
dic={'name':'egon','age':18,'sex':'male'}
dic['xxx']
v=dic.get('name')
print(v)

v=dic.get('xxx')
print(v)

# 需要掌握的操作

#dic.fromkeys()的用法:
l=['name','age','sex']
dic={'name':None,'age':None,'sex':None}
dic={}
for k in l:
dic[k]=None
print(dic)

dic=dic.fromkeys(l,None)
print(dic)

old_dic={'name':'egon','age':18,'sex':'male'}
new_dic={'name':'EGON','x':1,'y':2}
old_dic.update(new_dic)
print(old_dic)

# setdefault:有则不动/返回原值,无则添加/返回新值
dic={'name':'egon','age':18}
res=dic.setdefault('name','EGON') # 字典中已经存在key则不修改,返回已经存在的key对应的value
print(dic)
print(res)

res=dic.setdefault('sex','male') # 字典不存在key则添加"sex":"male",返回新的value
print(dic)
print(res)

# #二:该类型总结
# 1 存多个值

# 2 无序
#
# 3 可变
dic={'x':1}
print(id(dic))
dic['x']=2
print(id(dic))

# 练习1:
nums=[11,22,33,44,55,66,77,88,99,90]
dic={
'k1':[],
'k2':[]
}
for num in nums:
if num > 66:
dic['k1'].append(num)
else:
dic['k2'].append(num)
print(dic)

# 练习2:
s='hello alex alex say hello sb sb'
words=s.split()
dic={}
# print(words)
for word in words:
if word in dic:
dic[word]+=1
else:
dic[word]=1
print(dic)

s='hello alex alex say hello sb sb'
words=s.split()
dic={}
for word in words: # word="hello"
dic.setdefault(word,words.count(word)) #{'hello':2,"alex":2,"say":1,}
print(dic)

集合set

pythons=['李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy']
linuxs=['lxx','egon','张金蛋','张锡蛋','alex','陈独秀']

l=[]
for stu in pythons:
if stu in linuxs:
l.append(stu)
print(l)

#一:基本使用:set
# 1 用途: 关系运算,去重
#
# 2 定义方式: 在{}内用逗号分开个的多个值
# 集合的三大特性:
# 2.1 每一个值都必须是不可变类型
# 2.2 元素不能重复
# 2.3 集合内元素无序

s={1,3.1,'aa',(1,23),} # s=set({1,3.1,'aa',(1,23),})
print(s,type(s))

s={1,1,1,1,1,1,1,1,1,2,3}
print(s)

s={'a','b','c'}
s[0]

s=set('hello')
print(s)
print(set(['a','b','c',[1,2]]))

# 3 常用操作+内置的方法
pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'}
linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'}
# 取及报名python课程又报名linux课程的学员:交集
print(pythons & linuxs)
print(pythons.intersection(linuxs))

# 取所有报名老男孩课程的学员:并集
print(pythons | linuxs)
print(pythons.union(linuxs))

# 取只报名python课程的学员: 差集
print(pythons - linuxs)
print(pythons.difference(linuxs))

# 取只报名linux课程的学员: 差集
print(linuxs - pythons)
print(linuxs.difference(pythons))

# 取没有同时报名两门课程的学员:对称差集
print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs))

# 是否相等
s1={1,2,3}
s2={3,1,2}
print(s1 == s2)

# 父集:一个集合是包含另外一个集合
s1={1,2,3}
s2={1,2}
print(s1 >= s2)
print(s1.issuperset(s2))

s1={1,2,3}
s2={1,2,4}
print(s1 >= s2)

# 子集
s1={1,2,3}
s2={1,2}
print(s2 <= s1)
print(s2.issubset(s1))

# 需要掌握操作
s1={1,2,3}
s1.update({3,4,5})
print(s1)

s1={1,2,3}
res=s1.pop()
print(res)

s1={1,2,3}
res=s1.remove(3) #单纯的删除,返回值为None
print(s1)

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

s1={1,2,3}
s2={1,2}
s1.difference_update(s2) #s1=s1.difference(s2)
print(s1)

s1={1,2,3}
res=s1.discard(3) ##单纯的删除,返回值为None
print(s1)
print(res)
s1.remove(444444) #删除的元素不存在则报错
s1.discard(444444) #删除的元素不存在不会报错

s1={1,2,3}
s2={1,2,4}
print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True

s1={1,2,3}
s2={4,5,6}
print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True

#二:该类型总结
# 1 存多个值
#
# 2 无序
#
# 3 set可变
s={1,2,3}
print(id(s))
s.add(4)
print(id(s))

# 集合去重
# 局限性
#1、无法保证原数据类型的顺序
#2、当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重
names=['alex','egon','alex','alex','egon','lxx']
s=set(names)
print(s)
l=list(s)
print(l)

stus_info=[
{'name':'egon','age':18},
{'name':'alex','age':73},
{'name':'oldboy','age':84},
{'name': 'egon', 'age': 18},
{'name': 'egon', 'age': 18},
{'name': 'egon', 'age': 18},
{'name': 'oldboy', 'age': 84},

]
# set(stus_info) # 报错
l=[]
for info in stus_info:
if info not in l:
l.append(info)

# print(l)
stus_info=l
print(stus_info)

py06的更多相关文章

  1. 正则split的使用

    import re #\s 空格 +号表示至少出现一次 # path = 'C:\\Users\\cz\Desktop\py06\\PY6_Day01\\爬虫作业\\2018_03_07\\05_sp ...

  2. python操作MySQL、事务、SQL注入问题

    python操作MySQL python中支持操作MySQl的模块很多 其中最常见就是'pymysql' # 属于第三方模块 pip3 install pymysql # 基本使用 import py ...

随机推荐

  1. ubuntu 20.04 远程桌面(win10 控制 Ubuntu 20.04)

    转载csdn: https://blog.csdn.net/lucky7213/article/details/107008246/

  2. 手机访问wamp及wampserver64设置开放权限后局域网无法连接

    服务器配置:在手机上WampServer电脑端网页的效果! 1.本地虚拟主机下的 Apache 目录中的bin 目录中的 config 配置文件 http.config文件使用代码编辑器. 2.将ht ...

  3. JavaSE 对象与类(二)

    6.对象构造 重载:如果有多个方法(比如,StringBuilder构造器方法)有相同的名字.不同的参数.便产生了重载. 重载解析:编译器通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹 ...

  4. NSAIDs以优化剂量治疗中轴型SpA:聚焦6周期间骶髂关节MRI变化

    NSAIDs以优化剂量治疗中轴型SpA:聚焦6周期间骶髂关节MRI变化 PresentID: OP0170 TREATMENT OF AXIAL SPONDYLOARTHRITIS WITH AN O ...

  5. [专题总结]Gridea快速免费搭建个人博客

    介绍 或许你很想把你所知道的问题写出来,或许你文思泉涌,想给大家分享.我相信,你一定能写好博客,只要坚持,就可以了. 或许大家会不理解,为什么不用大平台的博客呢?或许你稍微了解就会知道,现在的博客平台 ...

  6. 使用vscode编辑markdown

    目录 markdown在vscode中的使用 标题 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 列表 图片 表格 网址 代码 文本样式 引用 目录 vscode中使用的插件推荐 截图工 ...

  7. Spring Cloud Alibaba 整合 Seata 实现分布式事务

    在Spring Boot单体服务中,添加@Transactional注解就能实现事务.在单体服务中,执行事务都是在同一个数据库下进行.但是随着业务越来越复杂,数据量越来越大会进行分库分表.在微服务场景 ...

  8. 时钟切换电路(无毛刺)——clock switching glitch free

    0.引言 随着越来越多的多频时钟被应用在今天的芯片中,尤其是在通信领域中,经常需要在芯片运行时切换时钟线的源时钟.这通常是通过在硬件中复用两个不同的频率时钟源,并通过内部逻辑控制多路选择器选择线来实现 ...

  9. git 的基础使用

    配置: 首次安装完git后,需要配置信息 检查配置: git修改:  git config --global user.name "Your_username"    重新设置gi ...

  10. input标签file文件上传图片本地预览(转载)

    <input type="file" name="img-up" id="img-up" value="" /&g ...