python语言(二)列表、字典、集合、文件读写、关系测试
s = '王宇建,苏红,邹存才...'
# 列表 数字 list
l = ['王宇建','苏红','邹存才'] # 一维数组 二维数组 三维数组
# 0 1 2
# 索引、下标、角标
l3 = [1,2,3,4,['abc',123,'ccd'],7] # list里面套list 这就叫做二维数组 以此类推三维数组
# list取元素的时候是根据编号取值的
print(l[0])
print(l[1])
print(l[-1]) # -1就是取最后一个元素
# 增加元素
l.append('王亚娟') # append是在末尾增加元素
l.append('李永')
l.insert(0,'周杰伦') # 在指定位置增加元素
l.insert(7,123) # 如果你指定的下标没有,那么就加到最后面
# 修改
l[3] = '财神爷'
print(l)
# 删除
l.pop(3) # 指定下标删除
l.remove('王宇建') # 指定元素删除
del l[0] # 指定下标删除
print(l)
print(l.count('王亚娟')) # count 就是该元素出现次数
index = l.index(123) # 找元素下标
l.reverse() # 反转list
l2 = [4,5,2,24,23,564,135,5432]
l2.sort() # 排序 l2.sort(reverse=True) # 降序
print(l2)
l3 = l + l2 # 直接相加就是把两个list合并成一个list
print('L3',l3)
l.extend(l2) # 把 l2里面的元素加到l里面
print('L',l)

students = ['zhouchuncai','gaotiaoming','limingmin']
# for stu in students:
# print(stu)
for i in students:
print(i)
# 通过下标来循环
# for i in range(len(students)):
# print(students[i])
if 'zhouchuncai' in students: # 或者用not in来判断是否在list里面
print('存在') # 1、判断存在
elif 'zhou' not in students:
print('不存在') # 2、判断不存在
# in 或 not in 也可以用在字符串里面
s='abc'
if 'a' in s:
print('存在')
.png)
students = ['zhouchuncai','gaotiaoming','limingmin']
students2 = [']
# 字典key - value -----字典的查找速度比list快很多
d = {'name':'zhouchuncai',
',
'sex':'未知',
'addr':'北京',
'}
# 1、取值 有两种方式
#print(d['name']) # 取不存在的key会报错
print(d.get('money')) # 用第二种方式取值,如果取不到不会报错,显示None
.png)
# 1、取值 有两种方式
#print(d['name']) # 取不存在的key会报错
print(d.get('money')) # 用第二种方式取值,如果取不到不会报错,显示None
# 2、增加key
# d['money']=500 # 如果key存在,就修改它的值
# d.setdefault('car','bmw') # 如果key存在,那就不管了
# print(d)
.png)
# 3、修改
d['sex'] = '女' # 修改
# 4、删除
#d.pop('sex')
# d.pop('sex') # 删除指定的key,会返回删除的值
# del d['sex'] # 删除指定的key
# 5、 d.clear() # 清空字典
print(d.keys()) # 字典里面所有的key
print(d.values()) # 字典里面所有的value
print(d)
.png)
# 4、删除
#d.pop('sex')
# d.pop('sex') # 删除指定的key,会返回删除的值
# del d['sex'] # 删除指定的key
# 5、 d.clear() # 清空字典
print(d.keys()) # 字典里面所有的key
print(d.values()) # 字典里面所有的value
print(d)
.png)
d = {
'id':315,
'name':'矿泉水',
'sex':'女',
'age':27,
'addr':'上海',
'grade':'摩羯座',
',
'gold':100
}
# 方法一 优先选这种方式
# for k in d: # 直接循环字典,每次取得是字典里面的key
# value = d.get(k) # 循环的时候同时取到key和value
# print(k,value)
# 方法二
print(d.items())
print(d.keys())
# for key,value in d.items():
# print(key,value)
# if 'id' in d: 如果字典用in来判断的话,它判断的是key存在不存在
# if 'id' in d.keys()
.png)
# stus = {'username':'wangyujian','password':'123456'}
stus2 = {'}
for i in range(3):
username = input('username:').strip()
pwd = input('password:').strip()
cpwd = input('cpassword:').strip()
if username == '' or pwd == '' or cpwd == '':
print('输入不能为空')
elif username in stus2:
print('用户已注册')
elif pwd != cpwd:
print('两次输入的密码不一致')
else:
stus2.setdefault(username,pwd)
print('注册成功!')
print(stus2)
.png)
print(l[0:3]) # 切片是顾头不顾尾,即第4个元素不含在取值范围里面 print(l[:3]) # 冒号前头没数组,那就从第一个开始 print(l[3:]) # 冒号后头没数组,那就从第4个开始一直取到最后 print(l[:]) # 只有冒号-就取全部元素 s = 'abc1234' print(s[2::5]) # 字符串内的元素也一样 print(l[0:7:2]) # 从下标为0开始,中间隔1个元素取一个,步长 print(l[::2]) # 从开头,中间隔1个元素取一个,步长
l = [1,2,3,4] l2 = (1,2,3,4) # 元组和list最大区别就是里面的数据不能修改
l[1] = '
print(l2[0:2])
# 在python里面分两种数据类型:#1、可变数据类型:list、dict
#2、不可变数据类型:tuple、str、float、int
db_info = [','db1']
db_info = (','db1') # 里面元素不可修改
.png)
.png)
l = [1,2,3,4,5,6,7,8,9,10]
l2 = [1,2,3,4,5,6,7,8,9,10]
for i in l2:
if i%2 != 0: # i%2 表示取偶数
l.remove(i)
print(l)
.png)
# 浅拷贝
l = [1,2,3,4,5,6]
l2 = l
print('l的内存地址',id(l))
print('l2的内存地址',id(l2))
l.append('吴丽丽')
l2.remove(1)
print('l',l)
print('l2',l2)
.png)
import copy
l = [1,2,3,4,5,6]
l2 = copy.deepcopy(l)
print('l的内存地址',id(l))
print('l2的内存地址',id(l2))
l.append('吴丽丽')
l2.remove(1)
print('l',l)
print('l2',l2)
.png)
import copy
l = [1,2,3,4,['a','b','c']]
l2 = copy.deepcopy(l) # 深拷贝
l2 = l[:] # 浅拷贝
l2 = l # 浅拷贝
l2 = l.copy() # 浅拷贝
copy.copy(l2) # 浅拷贝
print('l',id(l))
print('l2',id(l2))
l[-1].append('abc')
l2.insert(0,'A')
l.append('!!!!!')
print('l',l)
print('l2',l2)
.png)
s = 'abc'
s.strip()
s.lstrip()
s.rstrip()
s.lower()
s.upper()
s.count('a')
print(s.index('a')) # 找字符串的下标 index找不到就报:0
print(s.find('d')) # 找字符串的下标 find找不到就报:-1
.png)
name = '小黑'
s = '你的名字是{}'.format(name)
s = '你的名字是{name}'
print(s.format_map({'name':'小白'}))
print(s.isupper()) # 判断是不是都是大写字母
print(s.islower()) # 判断是不是都是小写字母
print(s.isdigit()) # 判断是否为数字
s.startswith() # 判断什么开头
s.endswith() # 判断什么结尾
s = 'img.jpg'
')) # 判断以xx开头
print(s.endswith('jpg')) # 判断以xx结尾
number = input('请输入要产生几条:')
if not number.isdigit():
print('请输入整数!')
else:
number = int(number)
print(number)
s = 'a哈哈'
print(s.isalpha()) # 如果是字母和汉字的话返回true
print(s.isalnum()) # 如果是字母、汉字和数字的话返回true;只要不包含特殊字符都返回true
s.isspace(' ') # 是不是空格
print(s.capitalize()) # 首字母大写
print(s.title()) # 多个单词首字母大写
s = '
print(s.center(50,'*')) # 居中
print(s.zfill(5)) # 补零
s = 'aaaaaaabc'
s = s.replace('a','A') # Abc 替换
print(s)
s = 'gaotianming,zoucuncai,choulihong,suhong'
s = 'gaotianming/zoucuncai/choulihong/suhong'
result = s.split('/') # 用逗号分割每个元素
print(result)
#''.join 方法 连接字符串
import pprint
l = ['a','b','c'] # 把它变成abc
pprint.pprint(str(l)) # 把list里的内容都转成字符串
pprint.pprint(''.join(l)) # 以空字符串把a、b、c连接起来
.png)
l = [1,2,3,4,5]
# 把list元素变成字符串如下
s='
# 方法一
l2 = []
for i in l:
l2.append(str(i))
print(''.join(l2))
# 方法二
l2 = [str(i) for i in l]
print(''.join(l2)) # 方法一、方法二代码效果一样
l3 = [i for i in range(10) if i%2==0]
print(l3)
.png)
f = open('a.txt',encoding='utf-8')
result = f.read()
print(result)
f.close()
.png)
# 文件写
f = open('a.txt','w',encoding='utf-8')
f.write('你好') # 写的时候会清空原来的文件
f = open('a.txt',encoding='utf-8')
result = f.read()
print(result)
f.close()
.png)
f = open('a.txt','w',encoding='utf-8')
f.write('gaotianming'+'\n')
f.write('wangjiangyu'+'\n')
f = open('a.txt',encoding='utf-8')
result = f.read()
print(result)
f.close()
.png)
# 打开文件写绝对路径,要加:r
f = open(r'E:\PycharmProjects\mjz\day2\a.txt','w',encoding='utf-8')
f.write('高天明'+'\n')
f.write('王靖宇'+'\n')
f = open('a.txt',encoding='utf-8')
result = f.read()
print(result)
f.close()
.png)
f = open('a.txt','w',encoding='utf-8')
l = [']
for i in l:
f.write(i+'\n')
f = open('a.txt',encoding='utf-8')
result = f.read()
print(result)
f.close()
.png)
s = {1,2,3,1,2,3,4,5,6}
s2 = set() # 空集合
print(s)
l = [1,2,3,1,2,3,4,5,6]
print(set(l))
print(l)
.png)
# 关系测试
zidonghuaban = set(['gaotianming','wangjianyu','suhong'])
xingnengban = set(['jinshuang','gaotianming','wangjianyu'])
# 找出即学过自动化也学过性能的同学 (交集)
print(zidonghuaban & xingnengban) # 取交集
print(zidonghuaban.intersection(xingnengban)) # 取交集
print(zidonghuaban.union(xingnengban)) # 取并集 把两个集合合并到一起,然后去掉重复的
print(zidonghuaban|xingnengban) # 取并集
a = {1,2,3,4,5,6,232}
b = {3,4,5}
print(a-b) # 差集,在a集合里面存在,但在b集合里面没有
print(a.difference(b)) # 差集
.png)
python语言(二)列表、字典、集合、文件读写、关系测试的更多相关文章
- Python基础2 列表 字典 集合
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- Learn day3 深浅拷贝/格式化/字符串/列表/字典/集合/文件操作
1. pass break continue # ### pass break continue # (1) pass 过 """如果代码块当中,什么也不写,用pass来 ...
- 关于Python元祖,列表,字典,集合的比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'], ...
- python中元组/列表/字典/集合
转自:https://blog.csdn.net/lobo_seeworld/article/details/79404566
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python基础一 -------如何在列表字典集合中根据条件筛选数据
如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...
- Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
- python :列表 字典 集合 类 ----局部变量可以改全局变量
#列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...
- python之字符串,列表,字典,元组,集合内置方法总结
目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...
随机推荐
- [转帖]疑似兆芯开先KX-7000跑分曝光:IPC性能大幅提升
疑似兆芯开先KX-7000跑分曝光:IPC性能大幅提升 https://www.bilibili.com/read/cv4028300 数码 11-23 1589阅读28点赞22评论 尽管有ARM架构 ...
- 【题解】有限制的排列 [51nod1296]
[题解]有限制的排列 [51nod1296] 传送门:有限制的排列 \([51nod1296]\) [题目描述] 给出 \(n,m_1,m_2\) 和 \(\{a[1],a[2]...a[m_1]\} ...
- 认清楚服务器的真正身份--深入ARP工作原理
我们知道IP地址是ISP分配给我们的,IP不能作为服务器的唯一的身份,那么服务器真正的身份是什么呢?MAC IP地址直接的通信在底层要转换到MAC直接的通信,那他们如何通信的呢? 1.简介 出场人物: ...
- ad域的那些事儿
先附上参考链接,有空再来整理 基础知识:https://www.cnblogs.com/cnjavahome/p/9029665.html ad域的操作:https://www.cnblogs.com ...
- SUSE12Sp3-使用Docker导入镜像并安装redis,zookeeper,kafka
首先在另外一台联网电脑拉取最新的redis,zookeeper,kafka镜像 docker pull redis docker pull zookeeper docker pull wurstmei ...
- java中的进制与操作符
直接常量 double: 111d,111D 二进制:前缀为0b 十六进制:前缀为0x或0X,后面最大9位. 八进制:前缀为0,后面最大7位. 按位操作符 与(&): 或(||): 异或(^) ...
- 颜色rgba和16进制
今天阅读代码的时候看到了一个实现颜色渐变的效果,不同于以往使用函数实现的颜色渐变,这个是规律的递增rgba里面的几个参数完成的,看起来就像是等差数列一样.没想到还能这样来,简单的了解了一下 rgba的 ...
- BZOJ3209: 花神的数论题(数位DP)
题目: 3209: 花神的数论题 解析: 二进制的数位DP 因为\([1,n]\)中每一个数对应的二进制数是唯一的,我们枚举\(1\)的个数\(k\),计算有多少个数的二进制中有\(k\)个\(1\) ...
- AppiumLibrary 关键字文档
http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html#Start%20Activity
- vue与webpack开发环境搭建:从无到有
一个vue从无到有的搭建过程. 一.不论是webpack还是vue,最初的第一步就是安装node.js.它是基石. 从官网下载你需要的安装包:官网下载链接:http://nodejs.cn/downl ...