一、各种操作
1、字符串
a.字符串格式化输出
name = "x5456"
print "i am %s " % name
#输出: i am x5456
PS: 字符串是 %s;整数 %d;浮点数%f
b.查找字符串(find)
str.find(str, start=0, end=len(mystr)) #
检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
>>> str = 'xinge 好帅'
>>> str.find('xing')
0
>>> str.find('好')
6
c.查找替换字符串中内容(replace)
mystr.replace(str1, str2, mystr.count(str1)) # 把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
>>> str = 'abcabcabc'
>>> str.replace('a','xinge',2)
'xingebcxingebcabc'
d.以str为分割符切片(split)
mystr.split(str=" ", 2) # 以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
>>> str = 'a\nb\tc'
>>> str
'a\nb\tc'
>>> str.split()
['a', 'b', 'c']
f.将字符串首字母大写(capitalize)
>>> str='abc'
>>> str.capitalize()
'Abc'
g.把字符串的每个单词首字母大写(title)
>>> str = "hello world"
>>> str.title()
'Hello World'
h.startswith,endswith
startswith # 检查字符串是否是以str 开头, 是则返回 True,否则返回 False
endswith # 检查字符串是否以str结束,如果是返回True,否则返回 False.
i.upper,lower
upper # 转换 mystr 中所有字符为大写
lower # 转换 mystr 中所有字符为小写
j.strip,lstrip,rstrip
strip # 清除左右两边的空格
lstrip # 清除左边的空格
rstrip # 清除右边的空格
k.join
mystr.join(str) # mystr 中每个字符后面插入str,构造出一个新的字符串
>>> '123'.join('abc')
'a123b123c'
2、列表
a.切片
1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
2 >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4
3 ['Tenglan', 'Eric', 'Rain']
4
5 >>> names[1:-1] #取下标1至-1的值,不包括-1
6 ['Tenglan', 'Eric', 'Rain', 'Tom']
7
8 >>> names[0:3]
9 ['Alex', 'Tenglan', 'Eric']
10
11 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
12 ['Alex', 'Tenglan', 'Eric']
13
14 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
15 ['Rain', 'Tom', 'Amy']
16
17 >>> names[3:-1] #这样-1就不会被包含了
18 ['Rain', 'Tom']
19
20 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
21 ['Alex', 'Eric', 'Tom']
22
23 >>> names[::2] #和上句效果一样
24 ['Alex', 'Eric', 'Tom']
View Code
b.追加
1 >>> names
2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
3
4 >>> names.append("我是新来的")
5
6 >>> names
7 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
View Code
c.插入
1 >>> names
2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
3
4 >>> names.insert(2,"强行从Eric前面插入")
5
6 >>> names
7 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
8
9 >>> names.insert(5,"从eric后面插入试试新姿势")
10
11 >>> names
12 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
View Code
d.修改
1 >>> names
2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
3
4 >>> names[2] = "该换人了"
5
6 >>> names
7 ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
View Code
e.删除
1 >>> del names[2]
2
3 >>> names
4 ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
5
6 >>> del names[4]
7
8 >>> names
9 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
10
11 >>> names.remove("Eric") #删除指定元素
12
13 >>> names
14 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
15
16 >>> names.pop() #删除列表最后一个值
17 '我是新来的'
18
19 >>> names
20 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
View Code
f.列表合并
1 >>> names
2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
3
4 >>> b = [1,2,3]
5
6 >>> names.extend(b)
7
8 >>> names
9 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
View Code
g.浅copy
1 >>> names
2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
3
4 >>> name_copy = names.copy()
5
6 >>> name_copy
7 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
View Code
h.深copy
1 import copy
2
3 n1 = [1,2,3]
4
5 n2 = copy.deepcopy(n1)
View Code
i.统计
1 >>> names
2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
3
4 >>> names.count("Amy")
5 2
View Code
j.排序&翻转
1 >>> names
2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
3 >>> names.sort() #排序
4 Traceback (most recent call last):
5 File "<stdin>", line 1, in <module>
6 TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦
7 >>> names[-3] = '1'
8 >>> names[-2] = '2'
9 >>> names[-1] = '3'
10 >>> names
11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
12 >>> names.sort()
13 >>> names
14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
15
16 >>> names.reverse() #反转
17 >>> names
18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
View Code
k.获取下标
1 >>> names
2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
3 >>> names.index("Amy")
4 2 #只返回找到的第一个下标
View Code
3、元组
元组和列表的区别就是元组不可更改,所以它只有2个方法,count和index。
4、字典(键值对集合)
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
特性:
- dict是无序的
- key必须是唯一的,天生去重
a.增加
1 >>> info["stu1104"] = "abc"
2 >>> info
3 {'stu1102': 'x5456', 'stu1104': 'abc', 'stu1103': 'Mali', 'stu1101': 'Wu'}
View Code
b.修改
1 >>> info['stu1101'] = "xinge"
2 >>> info
3 {'stu1102': 'x5456', 'stu1103': Mali', 'stu1101': 'xinge'}
View Code
c.删除
1 >>> info
2 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}
3 >>> info.pop("stu1101") #标准删除姿势
4 '武藤兰'
5 >>> info
6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
7 >>> del info['stu1103'] #换个姿势删除
8 >>> info
9 {'stu1102': 'LongZe Luola'}
10 >>>
11 >>>
12 >>>
13 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
14 >>> info
15 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除
16 >>> info.popitem()
17 ('stu1102', 'LongZe Luola')
18 >>> info
19 {'stu1103': 'XiaoZe Maliya'}
View Code
d.查找
1 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
2 >>>
3 >>> "stu1102" in info #标准用法
4 True
5 >>> info.get("stu1102") #获取
6 'LongZe Luola'
7 >>> info["stu1102"] #同上,但是看下面
8 'LongZe Luola'
9 >>> info["stu1105"] #如果一个key不存在,就报错,get不会,不存在只返回None
10 Traceback (most recent call last):
11 File "<stdin>", line 1, in <module>
12 KeyError: 'stu1105'
View Code
e.获取所有键/值
1 #values
2 >>> info.values()
3 dict_values(['LongZe Luola', 'XiaoZe Maliya'])
4
5 #keys
6 >>> info.keys()
7 dict_keys(['stu1102', 'stu1103'])
View Code
f.字典合并
1 #update
2 >>> info
3 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
4 >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
5 >>> info.update(b)
6 >>> info
7 {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
View Code
g.深copy
import copy
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n4 = copy.deepcopy(n1)
h.字典循环
#方法1
for key in info:
print(key,info[key])
#方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
print(k,v)
5、集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作:
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”的一个浅复制
6、文件读写
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
f = open('lyrics') #打开文件
first_line = f.readline()
print('first line:',first_line) #读一行
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:
...
二、循环
一、while循环
while 条件:
# 循环体
# 如果条件为真,那么循环体则执行
# 如果条件为假,那么循环体不执行
二、for循环
用户按照顺序循环可迭代对象中的内容,
li = [11,22,33,44]
for item in li:
print item
- break:跳出整个循环
- continue:跳出当前循环
enumrate
为可迭代的对象添加序号
li = [11,22,33]
for k,v in enumerate(li, 1):
print(k,v)
range
指定范围,生成指定的数字
print range(1, 10)
# 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
print range(1, 10, 2)
# 结果:[1, 3, 5, 7, 9]
print range(30, 0, -2)
# 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]