本节内容

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码
 

一.列表和元组的操作

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

定义列表

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列表元组、字典、集合的更多相关文章

  1. Python成长笔记 - 基础篇 (二)python基本语法

    Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像 ...

  2. Python成长笔记 - 基础篇 (一)python简介

    一.Python介绍 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),由吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于1991 ...

  3. Python成长笔记 - 基础篇 (十一)

    回顾: 线程:资源的集合:内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁 进程:运行的最小单元 守护进程:在start之前设置setDemo() 队列queue:作用解耦,使 ...

  4. Python成长笔记 - 基础篇 (十)

    本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...

  5. Python成长笔记 - 基础篇 (十二)

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的 ...

  6. Python成长笔记 - 基础篇 (七)python面向对象

      三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 ...

  7. Python成长笔记 - 基础篇 (六)python模块

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  8. Python成长笔记 - 基础篇 (四)函数

    1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python   1.函数:http://egon09.blog.51cto.com/9161406 ...

  9. Python成长笔记 - 基础篇 (八)

    socket编程 应用层: 表示层: 会话层: 传输层: 网络层: ip地址 数据链路层: MAC地址 物理层:   协议类型: TCP/IP协议:三次握手,四次断开     2. Socket 参数 ...

随机推荐

  1. EntityFramework+WCF

    首先需要在服务对象实例上面添加数据契约[DataContract]和  [DataMember],当然直接在类中修改也可以,但是对于tt模板来说一旦保存以后数据就会重新生成, 所以得在tt模板中修改 ...

  2. 删除sde用户问题

    删除SDE用户(GIS地图数据用户),长时间删除没反应,结束drop user sde cascade命令后,重新执行,结果报ORA-00604 ORA-21700 select user_id,us ...

  3. The Magic only works with total devotion of one's heart

    The Magic only works with total devotion of one's heart All tools and equipments are useless without ...

  4. vi的查找与替换

    0x01 查找 (在命令行模式下) /<要查找的字符>   向下查找要查找的字符 ?<要查找的字符>   向上查找要查找的字符 0x02 替换 (在底行模式下) :0,$s/s ...

  5. python调用jar包类

    #!/usr/bin/python2.7#coding:utf8import sysimport jpypeimport os.path phone_num = sys.argv[1]#jarpath ...

  6. vue-cli#2.0 webpack 配置分析

    目录结构: ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-s ...

  7. Excel 数值转换为人民币大写金额字符串

    把$B$27单元格中的数值转换为人民币大写金额字符串: 目标单元格填入以下公式: =IF($B$27=0,CONCATENATE(IF($B$27<=0,,TEXT(INT($B$27),&qu ...

  8. centos6.x下手工安装二进制Docker v1.1x

    Docker在 centos 6.x 下面默认最新的版本是1.7, 然而这个并不符合我的实际需求, 尤其我需要 docker-compose 来作为编配工具部署swarm, 所以只有使用二进制的安装包 ...

  9. 种类并查集(POJ 1703)

    1703 -- Find them, Catch them http://poj.org/problem?id=1703 题目大意:有2个敌对帮派,输入D a b表示a,b在不同帮派,输入A a b表 ...

  10. 想要隐藏navigationBar,同时又想支持右滑返回功能

    如果直接设置 self.navigationBarHidden = YES; 那同时也会屏蔽右滑返回功能. 解决办法1: self.navigationBarHidden = NO; self.nav ...