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:原生字符串输出