Python成长笔记 - 基础篇 (三)python列表元组、字典、集合
本节内容
- 列表、元组操作
- 字符串操作
- 字典操作
- 集合操作
- 文件操作
- 字符编码与转码
一.列表和元组的操作
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
定义列表
names = ["Wang","Hou1","NiuNiu","Zhou","Hou2",[1,2]]
可以通过列表角标的方式去获得list中的值
print(names)
print(names[0]) #获取names中0角标元素的值
print(names[0],names[1]) #获取names中0/1角标元素的值
print(names[5])
print(names[-1])# 取最后一个,倒序取值
#print(names[0:3]) #切片 顾首不顾尾,
#print(names[1:3]) #切片 顾首不顾尾,
#print(names[:3]) #切片 顾首不顾尾,首位是0可以省略
#print(names[-1:-3]) #切片只能从左往右取,错的
#print(names[-6:-1])
#print(names[-6:])#切片中0和-1 可以省略
#print(names[:])
#print(names[0:])
#print(names[-1:])
#print(names[0:-1])
#print(names[:-1])
#print(names[-6:])
#print(names[0::2]) #步长
#print(names[::2]) # 每隔一个切一回 可以省略0 -1 从头切到尾
'''
#插入操作
names.append("MeiZi")#追加:在最后插入
print(names)
names.insert(1,"XiaoQian")#在原来第二个位子插入
print(names)
'''
#修改
names[1]="QianQian" # 修改第二个位置的人
print(names)
#delete
names.remove("Wang")
del names[0]
names.pop(0)
print(names.index("Hou"))
print(names[names.index("Hou")])
print(names.count("Hou"))

介绍个特殊的方法extend()
看下小练习

num=[1,2] num1=[3,4] num.extend(num1) print(num) # 打印结果为[1, 2, 3, 4]

可以看出来 这个方法的作用是将list num1扩展到num中
再介绍下深浅copy
浅copy
浅copy只会拷贝一层,不会对深层次拷贝
例:
name1=["a","b","c",[1,2]] name2=name1.copy() name1[-1][1]=1000 print(name1,name2) 运行结果:['a', 'b', 'c', [1, 1000]] ['a', 'b', 'c', [1, 1000]]

通过上面的知识点我们可以知道 打印的name1 和 name2都会变为1000 ,
由于浅copy不会对深层次拷贝,name1和name2指向同一个地址,name2改变name1随之改变
3.元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
它只有2个方法,一个是count,一个是index,完毕。
# 格式
name=(1,2,3,3) name.count(3) # 获取这个元组中3的个数 name.index(1) # 获取1这个元素在元组的位置
4.字符串操作方法

name='houyafan'
name.capitalize() # 字符串的首字母大写
name.count('a') # a在字符串中出现的次数
name.center(50,'-')# 一共打印50个字符 不够的用-填
name.endswith('an') # 判断是否以an结尾 返回真 假
name.startswith('ho') # 判断是否以ho开始 返回 真 假
name.find('a') # 所在字符串的位置 如果存在多个相同的,从左开始第一个
name.format_map({}) # 传字典 没啥卵用
name.isalnum() # 包含数或字母任意一个就返回真 否则返回假
name.isalpha() # 只要全部是纯英文字符 则返回真 否则返回假
name.isdecimal() # 判断是否是10进制的数
name.isdigit() # 判断是否是整数
'variable'.isidentifier() # 判断是否是一个合法的变量是返回真 否则返回假
name.islower() # 是否是小写字符 是返回真 否则返回假
name.isnumeric() # 是否只是数字组成的==isdigit 没什么卵用
name.isspace() # 是否是一个空格 是则返回真 否则返回假
name.istitle() # 所有单词的首字母大写
name.isupper() # 判断是否英文全部大写 是则返回真 否则返回假
'+'.join(['1','2','3']) # 将字符拼接成字符串中间可以加上任何东西 输出结果 1+2+3
name.ljust(50,'*') # 输出时 不够50 在末尾加*
name.rjust(50,'*'))# 输出时 不够50 在前面加*
name.lower() # 大写变小写
name.upper())# 小写变大写
name.lstrip() # 默认从左面去掉空格或回车
name.rstrip())# 默认不写 从右面去掉空格或回车
name.strip() # 去掉回车或空格
name.replace('1','h',count=1) # 1替换h count=1 代表左向右数第一个
name.rfind('o') # 从左到右 找到最右边的o 的角标位置
name.split(' ') # 字符串按照空格生成列表
'1+2+3'.splitlines() # 自动识别换行
name.swapcase() # 英文字母中大写就转小写 有小写就转大写
name.zfill(50)) # 50个字符 不够用零填写

上面是所有字符串的操作方法
介绍个很高大上的东西,如果在写程序时想加密自己的字符串可以通过下面的方法:

# 加密对照表 设置加密对照表
p=str.maketrans('abcdef','123456')
# 字符串引用加密
print('houyf'.translate(p))
# 同时加密了 我们也需要解密 反向设置对照表就可以实现解密了
z=str.maketrans('123456','abcdef')# 反解加密
# 字符串加密反解
print('houyf'.translate(z))

5.字典
字典是无序的 没有下标 通过key去查找

dict['1']='houyafan' # 修改
dict['4']='yuanyuan' # 没有这个key 就新建
del dict['1'] # 删除这个key和value
dict.pop('2') # 指定删除 key 是'2'的1对字典
dict.popitem()# 随机删除 没什么卵用
dict.get('1') # 安全的获取value 有就返回没有 就None
print('1' in dict)# key'1' 是否在这个字典中
dict.values() #打印所有的values
dict.keys() # 打印所有的key
dict.setdefault('4','yuanyuan') # 如果值存在就不动 不在就创建
dict.items() # 字典转换成一个大list
dict.update(dict1)# 合并字典,如果存在就更新,不存的key不存在就添加进去
new_dict=dict.fromkeys([1,2,3],'aaa') #初始化一个字典 并给他赋值key分别是123 值都是aaa

字典的循环
for i in dict:
print(i,dict[i])# 循环他的key i 对应的dict[i]对应的value
6.三元运算符

a = 1 b = 2 c = 3 d = a if a>b else c # d的值等于 如果 a大于b 则将a赋值给d 否则 c赋值给d

第二天的python就这样了,留个作业
实现商家和客户的商店接口,商家可以增加、删除、修改商品,同时同步到客户中,客户可以购买商品,第一次客户登陆提示输入存款,购买成功退出后,打印购买商品,同时记录余额。第二次进来直接展示余额。要求判断各种异常情况。
Python成长笔记 - 基础篇 (三)python列表元组、字典、集合的更多相关文章
- Python成长笔记 - 基础篇 (二)python基本语法
Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像 ...
- Python成长笔记 - 基础篇 (一)python简介
一.Python介绍 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),由吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于1991 ...
- Python成长笔记 - 基础篇 (十一)
回顾: 线程:资源的集合:内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁 进程:运行的最小单元 守护进程:在start之前设置setDemo() 队列queue:作用解耦,使 ...
- Python成长笔记 - 基础篇 (十)
本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...
- Python成长笔记 - 基础篇 (十二)
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的 ...
- Python成长笔记 - 基础篇 (七)python面向对象
三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 ...
- Python成长笔记 - 基础篇 (六)python模块
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
- Python成长笔记 - 基础篇 (四)函数
1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python 1.函数:http://egon09.blog.51cto.com/9161406 ...
- Python成长笔记 - 基础篇 (八)
socket编程 应用层: 表示层: 会话层: 传输层: 网络层: ip地址 数据链路层: MAC地址 物理层: 协议类型: TCP/IP协议:三次握手,四次断开 2. Socket 参数 ...
随机推荐
- httperf学习笔记(CentOS-6.6环境下安装配置)
新工作已经找到了,最近在忙着熟悉环境,昨天领导让我接触下httperf压力测试工具 百度了下,相关的文档,准备着手配置一个测试环境基于linux系统httperf+autobench+gnuplot, ...
- linux中软链接打包、计算以及同步
目录test中存在软连接: 1.打包,参数h(将实际文件进行打包): tar zcvfPh test.tar.gz test 2.计算大小,参数L(计算的是实际文件的大小): du -sL te ...
- eclipse报错 :java was started but returned exit code=13
一个礼拜没打开自己电脑上的eclipse,一打开居然报错,错误提示如下: cdm运行一下Java -version和javac 运行javac时报错,错误提示如下: 然后发现jdk的bin下没有dt. ...
- 移动端UC浏览器和QQ浏览器的部分私有meta属性
UC浏览器 1.设置屏幕横屏还是竖屏 <meta name="screen-orientation" content="portrait | landscape&q ...
- 【Tree 2】树形结构数据呈现的非递归算法(循环)实现
一.基本概况 上一篇博客介绍到用递归实现树结构数据的查找,那么这篇博客,我就结合自己对于树的理解,然后用一种非递归的方式进行树结构数据的处理.首先,改造数据库表设计,加入度的概念: 首先,layer的 ...
- Corba概念(GIOP、IIOP、IOR、ORB、IDL)
CORBA公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Manageme ...
- 8.4 H5知识点总结
HTML简介 HyperText Markup Language 简称为HTML HyperText: 超文本 (文本 + 图片 + 视频 + 音频 + 链接) Markup Language: 标记 ...
- ORACLE object_id和data_object_id
object_id和data_object_id 都是对象的唯一标识. object_id是对象的逻辑标识 data_object_id是对象的物理标识 对于没有物理存储的对象,data_object ...
- 在eclipse中运行perl代码,需要配置的插件以及方法
Eclipse配置正则表达式 网址:http://www.cnblogs.com/itech/archive/2010/02/23/1671676.html perl的环境配置以及在Eclipse中安 ...
- Origin9.1如何绘制风向玫瑰图(Binned Data)?
Origin9.1如何绘制风向玫瑰图(Binned Data)? 时间:2014/5/14 21:02:44 点击: 2624 核心提示:今天为大家介绍下如何使用Origin9.1绘制如下图所示的风向 ...