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

python学习Day11

Day11今日内容概要列表内置方法穿插知识:可变与不可变类型元组内置方法字典内置方法集合内置方法可变类型和不可变类型今日内容详细1.列表内置方法'列表在调用内置方法之后不

Day 11


今日内容概要



  • 列表内置方法

  • 穿插知识:可变与不可变类型

  • 元组内置方法

  • 字典内置方法

  • 集合内置方法

  • 可变类型和不可变类型


今日内容详细


1.列表内置方法

'列表在调用内置方法之后不会产生新的值,而是修改自身'
1.关键字
list
2.类型转换
#能被for循环的数据类型都可以转换成列表
print(list(123)) #整数型不可转换
print(list(123.1)) #浮点型不可转换
print(list(True)) #布尔值不可转换
print(list([1,2,3])) #列表可转换 [1,2,3]
print(list({'name':'张'})) #字典可转换 ['name',]
print(list((1,2,3))) #元组可转换 [1,2,3]
print(list({1,2,3})) #集合可转换 [1,2,3]
3.需要掌握的方法
lx = ['cat','tony','kevin']
1)索引取值
print(lx[0])#cat
print(lx[-1])#kevin
2)切片操作
print(lx[0:2])#['cat', 'tony']
print(lx[:])#['cat', 'tony', 'kevin']
print((lx[-3:-1]))#['cat', 'tony']
3)间隔/方向
print(lx[::2])#['cat', 'kevin']
4)统计列表中数据值的个数
print(len(lx))#3
5)增加数据
5.1)尾部追加数据值 '括号内无论写什么数据类型 都会当作一个数据值追加
lx.append([1,2])#在最后追加数据值
print(lx)#结果为['cat','tony','kevin',[1,2]]
'列表在调内置方法时是在原数据上修改,与字符串相反'
5.2)任意位置插入数据值
lx.insert(0,'插队')#在首位插入数据值
print(lx)#['插队'cat','tony','kevin']
5.3)扩展列表(让两个列表的值放在一个列表中)
eg:
l1=[1,2,3,4]
l2=[5,6]
方式一:
for i in l1:#让i循环打印出l1的值
l2.append(i)#在l2尾部追加i的值
print(l2)#打印l2
方式二:
print(L1+l2)
方式三:推荐使用!(仅支持for循环的数据类型:列表、字典、字符串、元组、集合)
l1.extend(l2)
print(l1)
6)修改数据
eg:
l1=[1,2,3,4]
l1[0]='z' #把l1索引0的值改为'z'
print(l1)#['z',2,3,4]
7)删除数据
7.1)通用删除
del l1[0]#删除l1索引0的数据值
print(l1)#[2,3,4]
7.2)指定删除
l1.remove(1)#在l1中指定删除这个数据值
print(l1)#[2,3,4]
7.3)先取出数据值然后删除
l1.pop()#括号内不写默认是最后一个,0代表第一个,1代表第二个
print(l1)#[2,3,4]

与指定删除不同的是:
pop是把删除的数据提取出来了,remove是彻底不存在了
l1=[1,2,3,4]
a = l1.pop()#把删除的数据赋值给a
print(a)#4
#常用于观战人数中xx退出观战

l1=[1,2,3,4]
a = l1.remove(1)
print(a)#None(没有)
8)查看数据值对应的索引值
print(l1.index(1))#0 l1中1的索引值为0
9)统计某个数据值出现的次数
l1 = [1,1,2,3,4]
print(l1.count(1))#2 列表中1出现的次数
10)排序
l1.sort() #升序
l1.sort(reverse=True) #降序
11)翻转
l1.reverse()
print(l1)#[4,3,2,1,1]
12)比较
a = [99,11]
b = [11,12,13]
print(a>b)#True 列表在比较大小时是按照位置顺序比较,索引0互相比较,99>11,结果就为True
#不同数据类型之间无法比较
#a比A大,因为中间涉及字符编码,a=97 A=65
#中文也各有编码

2.穿插知识:可变与不可变类型

'疑问:为什么字符串调用的内置方法是产生新的值,而列表却是改变自身?'
1.可变数据类型 list列表
值改变(内置方法来改变),内存地址可不变
l1 = [11, 22, 33]
print(id(l1)) # 1931283911552
l1.append(44) # [11, 22, 33, 44]
print(id(l1)) # 1931283911552
#列表在索引3下可以自由伸缩创建索引4
2.不可变数据类型 str字符 int整型 float浮点
值改变(内置方法来改变),内存地址肯定变
s1 = '$hello$'
print(id(s1)) #2623221532
s1 = s1.strip('$')
print(id(s1)) #2852135153

3.元组内置方法

'''支持for循环的数据类型都可以转为元组()
for循环支持的数据类型:字符串、列表、字典、元组、集合
不支持的数据类型:整型、浮点型、布尔值'''
1.关键字
tuple
2.类型转换
print(tuple(123)) #整数型不可转换
print(tuple(123.1)) #浮点型不可转换
print(tuple(True)) #布尔值不可转换
print(tuple([1,2,3])) #列表可转换 (1,2,3)
print(tuple({'name':'张'})) #字典可转换('name',)
print(tuple((1,2,3))) #元组可转换 (1,2,3)
print(tuple({1,2,3})) #集合可转换 (1,2,3)

t1 = ()#空元组
t1 = (1,)#当元组只有一个数据值时不要忘记加逗号,否则就会变成括号里的数据类型。
#ps:今后遇到可以存储多个数据值的数据类型,如果里面只有一个数据值,都建议加上逗号

t1 = (1,2,3)
3.索引相关操作
print(t1[0])#1
4.统计元组内数据值个数
print(len(t1))#3
5.元组的索引不能改变绑定的地址
eg:
t1 = (1, 2,[3,4])
t1[-1].append(5) #在元组索引-1(最后)的位置添加数据值5 由于最后的数据类型是列表 所以可以改变
print(t1) # (1,2,[3,4,5])

4.字典内置方法

核心1~8

1.关键字
dict
2.类型转换(了解即可)
print(dict([('name','jason'), ('pwd',123)]))
print(dict(name='jason', pwd=123))
#字典一般都是直接定义使用
3.字典取值
info={'name':'zhang','pwd':'123','hobby':'run'}
1)print(info['usname'])#不推荐使用,当k不存在时会报错
2)print(info.get('usname'))#推荐使用
#当k不存在时会默认返回None,也可以自己编辑返回的内容。
print(info.get('usname','不存在'))
#k存在时会返回对应的数据值
4.统计字典中键值对的个数
print(len(info))
5.修改字典V的值
inf=['name'] = 'li'
print(info)#{'name':'li','pwd':'123','hobby':'run'}
6.新增键值对
info={'name':'zhang','age':'18'}
info['pwd']=123#当键存在时是修改,键不存在时是新增
print(info)#{'name':'zhang','age':'18','pdw':'123'}
7.删除数据
7.1)del info['name'] #删除name键值对
7.2)a=info.pop('name')#输出a就是被删除的v值
7.3)info.popitem()#随即删除 一般不用
8.快速获取键 值 键值对数据
print(info.keys())#获取字典所有的K值,结构当作列表
#info_keys(['name','pwd','age'])
print(info.values())#获取字典所有的v值,同样当列表
#info_values(['zhang','123','18'])
print(info.items())#获取字典所有的kv键值对数据,组城列表套元组
#info_items([('name','zhang'),('pwd','123'),('age','18')])
9.快速构造字典 给的值默认情况下所有的键都用一个
仅在笔试题中出现过:
dict=dict.fromkeys(['name','pwd'],[])
dict['name'].append('张')
dict['pwd'].append('123')
问:print(dict)出现的结果是什么?
答:{'name':['张','123'],'pwd':['张':'123']}
10.键存在则获取对应的值,键不存在则设置

5.集合内置方法

1.关键字
set
2.类型转换
支持for循环的 且数据必须是不可变类型
3. 定义空集合需要使用关键字才可以
集合内数据必须是不可变类型(整型、浮点型、字符串、元组、布尔值)
4.去重
s1 = {1,1,2,2,3,3,4,4}
print(s1)#{1,2,3,4}
eg:把一个列表内的名字去重显示
l1=['jason','jason','oscar','tony']
s1=set(l1)#把列表转换成集合
l2=list(s1)#再把刚刚的集合转回列表
print(l2)#['jason','oscar','tony']
5.关系运算
eg:模拟两个人的好友集合
f1 = {'jason', 'tony', 'oscar', 'jerry'}
f2 = {'kevin', 'jerry', 'jason', 'lili'}
1)求f1和f2的共同好友
print(f1 & f2)#{'jason','jerry'}
2)求是f1的好友,但不是f2的好友
print(f1 - f2)#{'oscar', 'tony'}
3)求f1和f2所有的好友(没重复的)
print(f1 | f2)#f1和f2所有的好友(无重复)
4)求f1和f2各自独有的好友(排除共同好友)
print(f1 ^ f2)
6.父集 子集
eg:
s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {3, 2, 1}
print(s1 > s2)#判断s1是不是s2的父集 True
#集合在做比较时是依照谁包含谁来判断谁是父谁是子

作业

1.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
ps:思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写 不会没有关系)

2.去重下列列表并保留数据值原来的顺序
eg: [1,2,3,2,1] 去重之后 [1,2,3]
l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]

3.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythOns={'jason','oscar','kevin','ricky','gangdan','biubiu'}
  linuxs={'kermit','tony','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出所有报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合
4.整理今日内容及博客
针对可变不可变类型可参考老师博客进一步查看
https://www.cnblogs.com/Dominic-Ji/articles/15959963.html

——————————————————————————————————————————————————————————————————————————————————————

1.

image



推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
author-avatar
芬妮199025
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有