热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习python课程第六天

一.元祖类型 (tuple)1.什么是元祖?用途:用于存放多个值,当存放的多个值只有读的需求没有改变的需求时,用元祖最合适.定义方式:在()内用逗号分隔开的多个任意类型的值t(1,

一.元祖类型  (tuple)

1.什么是元祖?

用途:用于存放多个值,当存放的多个值只有读的需求没有改变的需求时,用元祖最合适.

定义方式:在()内用逗号分隔开的多个任意类型的值

t=(1,3,1,'aaa',(1,2,3),['a','b'])   #= tuple

res=tuple('hello')

res=tuple({'x':1,'y':2})

print(res)

 

2.常用的操作内置方法.

优先掌握的操作:

1.按索引的方式取值,(正向取,反向取都可以,但是只能去不能存.)

t=('a','b',1)

t[0]=111

 

2.切片(顾头不顾尾,步长)

t=('h','e','l','l','o')

res=t[1:3]

print(res)

print(t)

 

3.长度

t=('h','e','l','l','o')

print(len(t))

 

4.成员运算 in 和 not in

t=('h','e','l','l','o')

print('h' in t)

 

5.循环

t=('h','e','l','l','o')

for item in t:

  print(item)

 

该类型总结.

可以存多个值,是有序的, 是不可变类型.(但是元祖里面有列表的情况下,可以改变列表.)

t=(1,'a',['x','y','z'])

print(id(t[2]))

print(id(t))

t[2][0]='X'

print(t)

print(id(t))

print(id(t[2]))

 

需要掌握的方法

t=('a','b','a')

print(t.index('a'))

t.index('xxx')

print(t.count('a'))

可以运算一下有几个a

 

元祖符号

name=input('>>:').strip()

print(('my name is %s'%name).center(50,'*'))

center 代表可以在一行代码里补充入多少个字符,数字是整个长度有多少

 

二.字典类型  (dict)

用途:用来存多个(不同种类的值)

1.定义方式:在{}内用逗号分隔开多个Key:value的元素,其中value可以是任意的数据类型,而Key的功能通常是用来描述value的,

所以Key通常是字符串类型,但其实Key必须是不可变的类型(int\float\str\tuple)

d={0:'x',1.3:'y','K1':'z',(1,2,3):'aaa'}  #d=dict(...)

print(d[(1,2,3)])

d1

{[1,2,3]:'aaaa'}

d=dict([('K1',1),('K2',2),('K3',3)])

print(d)

 

l=[('k1',1),('k2',2),('k3',3)]
d={}
for t in l: #t=('k1',1)
k,v=t
print(k,v)
d[k]=v
print(d)

d=dict(l)
print(d)



d=dict(x=1,y=2,z=3)
print(d)

2.常用的操作+内置的方法

优先掌握的操作:

1.按Key存取值,可存可取

d={'x':1}
print(d['x'])
print(id(d))
d['x']=1111
print(d)
print(id(d))
d['y']=2222
print(d)


3.长度
d={'x':1,'y':2,'z':3}
print(len(d)) (可以查看字典的长度)


4.成员运算in和not in

d={'x':1,'y':2,'z':3}
print(1 in d) True
print('x ' in d) True


5.删除

d={'x':1,'y':2,'z':3}
del d['y']
print(d) (del直接删除)


d={'x':1,'y':2,'z':3}

res=d.pop('y')

print(d)

print(res) (pop可以在后面按索引删除)


6.键Keys(),值value(),键值一起是items()

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
print(d.keys())
print(list(d.keys()))

print(d.values())
print(list(d.values()))
print(d.items())
print(list(d.items()))


7.循环的使用

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}

for k in d.keys():
print(k)
for k in d:
print(k)

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

for k,v in d.items(): #k,v=('name', 'egon')
print(k,v)


该类型的总结:
存在多个值, 是无序的 可变的.

需要掌握的操作.
get的方法

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
v=d.get('namexxxxxxx')
print(v)
输出结果为: none

get可以随意的取值,还不会报错.


update的方法

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
d.update({'x':1,'name':"EGON"})
print(d)

update更新的意思,如果没有想要更新的item就可以直接加进去,如果有了.就更新.



fromkeys:需求是快速的新造出一个字典,value的初始值为None.而Key是来自于一个列表

keys=['name','age','sex']

d={}.fromkeys(keys,None)
print(d)


setdefault 在Key存在的情况下不会修改值,会返回原值 在Key不存在的情况下会新增值,会返回新增的值.

d={"x":1,"y":2}
res=d.setdefault('x',11111)
print(d)
print(res)


d={"x":1,"y":2}

res=d.setdefault('z',11111)
print(d)
print(res)



三.集合类型 (set)

1.什么是集合
在{}内用逗号分隔开多个值,集合的特点:
1.每个值必须是不可变类型.
2.集合是无序的.
3.集合内元素不能重复

2.为何要用集合:
1.用作关系运算.
2.去重

3.如何去用集合

集合的第一大用途,关系运算!

pythOns={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'}
linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'}

1 求同时报名两门课程的学生姓名:交集
print(pythons & linuxs) (简单的逻辑运算符号)
print(pythons.intersection(linuxs)) (属于内置的方法不建议用)


2.求报名老男孩学校课程的所有学生姓名:并集
print(pythons | linuxs) (同上)
print(pythons.union(linuxs))


3 求只报名python课程的学生姓名: 差集
print(pythons - linuxs) (把一起上了两门课程的同学排除)
print(pythons.difference(linuxs))

4 求没有同时报名两门课程的学生姓名: 对称差集
print((pythons - linuxs) | (linuxs - pythons))
print(pythons ^ linuxs) (明显第二个字符更简单)
print(pythons.symmetric_difference(linuxs))

5 父子集:指的是一种包含与被包含的关系
s1={1,2,3}
s2={1,2}
print(s1 >= s2)
print(s1.issuperset(s2))
print(s2.issubset(s1))

情况一:
print(s1 > s2) #>号代表s1是包含s2的,称之为s1为s2的父集
print(s2
情况二:
s1={1,2,3}
s2={1,2,3}
print(s1 == s2) #s1如果等于s2,也可以称为s1是s2的父集

综上:
s1 >= s2 就可以称为s1是s2的父集 两个值相同的集合,可以互为父集,也互为子集.看自己定义

s3={1,2,3}
s4={3,2,1}
print(s3 == s4) (一样的结果,互为父集.互为子集)



2.集合的第二大用途:去重
集合去重的局限性:
1.会打乱原值的顺序
2.只能针对不可变的值去重

stus=['egon','lxx','lxx','alex','alex','yxx']
new_l=list(set(stus))
print(new_l)

old_l=[1,[1,2],[1,2]]
set(old_l)
(不可hash的类型不可以被去重)


l=[
{'name':'egon','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'egon','age':20,'sex':'female'},
{'name':'egon','age':18,'sex':'male'},
{'name':'egon','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)



需要掌握的操作:

s1={1,2,3}
s1.update({3,4,5})
print(s1)
print(s1.pop())
print(s1)

pop在集合里不能索引删除,

s1.remove(2)
print(s1)

remove可以在集合里随便删除,后面加上想删除的字符.


s1={1,2,3}

print(id(s1))
s1.add(4)
print(s1)
print(id(s1))

add可以随便的添加字符,但是有了同样字符的话就不添加,没有影响.

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

print(s1)

discard可以随意的删除字符,没有这个字符也没影响.


s1={1,2,3}
s2={4,5}
print(s1.isdisjoint(s2))

isdisjoinnt:判断两个两个集合是否完全不相交.

总结:
集合存在多个值,是无序的.属于可变类型.


























































































 

 


推荐阅读
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • 最大化两个非空子集之间的和的差异:集合划分策略分析 ... [详细]
  • 本讲深入探讨了 Python 中集合的基本概念及其符号表示方法,通过实例代码详细解析了如何将列表转换为集合,并展示了集合在数据处理中的独特优势。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
author-avatar
细野本尊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有