Python_day2 列表、字符串、字典、集合
1. 列表、元组操作
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
列表不同于数组,列表可以存储任意类型的数据,并且可以混合类型存储.
定义列表
names = ['jason','fred','eric']
切片:取多个元素
arr[0:3] 取第 0,1,2元素
arr[-1] 取最后一个元素
arr[-5:] 取倒数第五个到最后一个之间的元素
追加
arr.append('yuansu')在最后添加元素
插入
arr.insert(2,'jason')在arr中第二个元素后面插入元素
修改
arr[1] = 'jason' 将第二个元素修改为jason
删除
arr.remove('元素名')删除指定元素
del arr[2] 删除第3个元素
arr.pop()删除最后一个元素
扩展,拼接
arr.extend(表名) 扩展一个新的列表,拼接.
拷贝
arr.copy() 开辟了新的内存空间 两个列表没有关系了 但是默认只copy第一层,不copy第二层
copy.copy(arr) 和 arr.copy()是一个意思
arr.deepcopy() 深拷贝
统计
arr.count(1) arr中 有多少个 '1' --计数
排序&翻转
arr.reverse() 翻转列表
arr.sort() 排序(3.0 必须是同一类型的才能排序)
获取下标
arr.index(9) arr钟 9的索引
步长
print(arr[0:-1:2]) 隔一个打印一个 (不填写,默认为1)
print(arr[0:-1:3]) 隔两个打印 ---步长
元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
names = ('jason','fred','eric')
它只有2个方法,一个是count,一个是index.
2. 字符串操作
特性:不可修改
name.capitalize() 首字母大写
name.casefold() 大写全部变小写
name.center(50,"-") 输出 '---------------------jason----------------------'
name.count('son') 统计 son出现次数
name.encode() 将字符串编码成bytes格式
"Jaosn\tFang".expandtabs(10)将\t转换成多长(10)的空格
name.find('A') 查找A,找到返回其索引, 找不到返回-1
msg.endswith('xxx') 以xxx结束
msg.startswith('xx') 以xx开头
msg.upper() 转换为大写
msg.lower() 转换为小写
msg.swapcase 大小写互换
msg.index('a') 返回a所在字符串的索引
'9aA'.isalnum() True
msg = "xxx{name},xxxx(age)"
msg.format('jason',123) 给字符串赋值
msg2 = "xxx{0},xxxx(1)" (只能按顺序 0,1,2,3....)
msg2.format('jason',123)
填充: name = 'jason fang' name.cneter(40,'-') :字符串长度不到40 在两边填充'-'
msg.isdigit() 判断是否全是数字
msg.isalpha() 判断是否都是字母
msg.isalnum() 所有的字符都是数字或者都是字母
msg.islower() 所有的都是小写
msg.isupper() 所有的都是大写
msg.istitle() 所有的都是首字母大写,比如标题
msg.isspace() 所有的都是空白字符:\t \n \r
3. 字典操作
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应
字典是无序的组合 Key是唯一的 存储在内存中的哈希值
增加
id_db[key][new]: 插入新的
删除
id_db[key].pop("xx"): 删除指定的
修改
id_db[key][index] : 修改
查找
id_db[key]: 取值 (不存在报错)
id_db.get(xxx):取值不报错
其他方法
#values 变为元组 禁用
>>> info.values()
dict_values(['LongZe Luola', 'XiaoZe Maliya'])
#keys 打印键值
>>> info.keys()
dict_keys(['stu1102', 'stu1103'])
#setdefault 取一个key值,不存在,就添加
>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","龙泽萝拉")
'LongZe Luola'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
#update 更新,拼接
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b)
>>> info
{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
#items 变为元组 禁用
info.items()
dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])
#通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
>>> dict.fromkeys([1,2,3],'testd')
{1: 'testd', 2: 'testd', 3: 'testd'}
如果是将列表赋值,赋值的是内存地址,也就是说修改单个列表中的内容,其他的也一并修改
循环dict
#方法1
for key in info:
print(key,info[key])
#方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
print(k,v)
4.集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作
s = set([3,5,9,10]) #创建一个数值集合
t = set("Hello") #创建一个唯一字符的集合
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t – s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
基本操作:
t.add('x') # 添加一项
s.update([10,37,42]) # 在s中添加多项
使用remove()可以删除一项:
t.remove('H')
len(s)
set 的长度
x in s
测试 x 是否是 s 的成员
x not in s
测试 x 是否不是 s 的成员
s.issubset(t)
s <= t
测试是否 s 中的每一个元素都在 t 中
s.issuperset(t)
s >= t
测试是否 t 中的每一个元素都在 s 中
s.union(t)
s | t
返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t)
s & t
返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t)
s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t)
s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy()
返回 set “s”的一个浅复制
5. 文件操作
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
f = open('lyrics') #打开文件
first_line = f.readline() print('first line:',first_line) #读一行 print('我是分隔线'.center(50,'-')) data = f.read()# 读取剩下的所有内容,文件大时不要用 print(data) #打印文件f.close() #关闭文件打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r') as f:
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open('log1') as obj1, open('log2') as obj2:
6. 其他补充
三元运算:
c = a+b if a>b else a-b
如果a>b 执行前面的a+b 如果不成立 执行 a-b
OS模块:
os.remove("filename") 删除文件
os.rename("filename") 修改文件名称
字符串格式化:
%s:字符串 %d:数字 %f:浮点型 %r:原生字符串输出

浙公网安备 33010602011771号