Python成长笔记 - 基础篇 (三)python列表元组、字典、集合

本节内容

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

一.列表和元组的操作

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

定义列表

names = ["Wang","HouZi1","NiuNiu","ZhouYi","HouZi2",[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)
#deletenames.remove("WangSen")del names[0]names.pop(0)print(names.index("HouZi"))print(names[names.index("HouZi")])print(names.count("HouZi"))

介绍个特殊的方法extend()

看下小练习

num=[1,2]

num1=[3,4]

num.extend(num1)

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

可以看出来 这个方法的作用是将list num1扩展到num中

在介绍下深浅copy

浅copy

浅copy只会拷贝一层,不会对深层次拷贝

如果在list中含有小list copy的是他的内存地址 所以更改小list中的值会变

看下下面的练习

name1=["a","b","c",[1,2]]

name2=name1.copy()

name1[-1][1]=1000

print(name1,name2)

通过上面的知识点我们可以知道  打印的name1 和 name2都会变为1000 因为list中含有小list 复制的是他的地址,所以只要改了一个地方 只要是指向他的都会变为1000

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就这样了,留个作业

实现商家和客户的商店接口,商家可以增加、删除、修改商品,同时同步到客户中,客户可以购买商品,第一次客户登陆提示输入存款,购买成功退出后,打印购买商品,同时记录余额。第二次进来直接展示余额。要求判断各种异常情况。

时间: 2024-10-19 08:50:21

Python成长笔记 - 基础篇 (三)python列表元组、字典、集合的相关文章

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

Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜. Python缩进 Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯.并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字.增加缩进表示语句块的开始,而减少缩进则表示语

python数据类型基础总结(字符串 列表 元组 字典 集合 )

字符串: 有序.不可变数据类型,支持索引,切片,步长(字符串中的每一个字母或字符都称为元素) 索引(下标):通过索引精确定位到每个元素 索引从左开始向右排 从0开始 索引时不能超过最大值,超出报错 从右向左排从-1开始 切片(顾头不顾尾) 步长 print(name[::2] 取整个字符串,步长为2 字符串方法: upper 全部大写 lower全部小写 capitalize 首字母大写 title每个单词的首字母大写 swapcase 大小写转换 starswith 以..开头 endswit

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

回顾: 线程:资源的集合:内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁 进程:运行的最小单元 守护进程:在start之前设置setDemo() 队列queue:作用解耦,使程序之间是实现松耦合,提高处理效率 FIFO:先进先出 LIFO:后进先出 队列中的数据使用完就没了(消费者生产者模型) 事件event:(红绿灯模型) python中的多线程是一个假象,我们是利用它上下文切换 io操作不占用CPU,计算操作占用CPU, python中大量的计算反而会使程序变得更慢

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

本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 ssh ssh_sftp SSH密钥 RSH -非对称密钥验证 公钥:public key 私钥: privat key 10.0.0.31 ----连接----> 10.0.0.41 私钥 公钥 10.0.0.31 生成密钥对ssh-keyg

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

三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 # class People:#经典类 class People(object):#新式类 def __init__(self,,age): self.name = self.age = age def eat(self): print('%s is eating' %self.name) def wo

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

1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python 1.函数:http://egon09.blog.51cto.com/9161406/1834777 编程语言中函数定义:函数是逻辑结构化和过程化的一种编程方法. 12345678910111213 python中函数定义方法: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字test:函数名

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

socket编程 应用层: 表示层: 会话层: 传输层: 网络层: ip地址 数据链路层: MAC地址 物理层: 协议类型: TCP/IP协议:三次握手,四次断开 2. Socket 参数介绍 socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)  必会 Create a new socket using the given address family, socket type and protocol nu

Python成长笔记 - 基础篇 (十四)--堡垒机

堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且只能严格按守卫的分配进入指定的建筑,且每个建筑物还有自己的权限访问控制,不同级别的人可以到建筑物里不同楼层的访问级别也是不一样的.还有就是,每个进入城堡的人的所有行为和足迹都会被严格的监控和纪录下来,一旦发生犯罪事件,城堡管理人员就可以通过这些监控纪录来追踪责任人. 堡垒要想成功完全记到他的作用,只

Python成长笔记 - 基础篇 (九)

创建一个socketserver 至少分以下几步: First, you must create a request handler class by subclassing the BaseRequestHandlerclass and overriding its handle() method; this method will process incoming requests.  Second, you must instantiate one of the server classe