Week02
列表
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
定义列表
names = ['Airic','Jonas','Micky']
#!/usr/local/bin/python3
# Author:Jonas Mao
names = ['jonas','aliy','john','james','lucy']
print(names)
print(names[0],names[1])
print(names[1:3])
print(names[3])
print(names[0:2])
print(names[:2])
print(names[-1])
print(names[-3:-1])
print(names[-3:])
1 names = ['jonas','air','john','james','lucy']
2
3 names.append('lili')
4 names.insert(1,'nicky')
5 names[2] = 'air'
6
7 names.remove('air')
8 del names[1]
9 names.pop()
10 names.pop(2)
11 print(names)
1 names = ['jonas','aliy','john','james','lucy']
2
3 print(names)
4 print(names.index('aliy'))
5 print(names[names.index('aliy')])
6 print(names.count('aliy'))
7 #names.clear() #清空列表
8 names.reverse()
9 print(names)
10 names.sort()
11 print(names)
12
13 names2 = [1,2,3,4]
14 names.extend(names2)
15 print(names)
16 print(names2)
17
18 del names2
19 print(names2)
1 names = ['jonas','oldboy',['jonas2','aliy2'],'aliy','Lucy','aliy']
2 names2 = names.copy()
3 print(names)
4 print(names2)
5
6 names[4] = 'lili'
7 print(names)
8 print(names2)
9
10 names[2][0] = 'abc'
11 print(names)
12 print(names2)
1 import copy
2
3 names = ['jonas','oldboy',['jonas2','aliy2'],'aliy','Lucy','aliy']
4 names2 = copy.deepcopy(names)
5 print(names)
6 print(names2)
7
8 names[4] = 'lili'
9 print(names)
10 print(names2)
11
12 names[2][0] = 'abc'
13 print(names)
14 print(names2)
1 names = ['jonas','oldboy',['jonas2','aliy2'],'aliy','Lucy','aliy']
2
3 print(names[0:-1:2])
4 print(names[::2])
5 print(names[:])
6
7 for i in names:
8 print(i)
1 import copy
2
3 person=['name',['saving',100]]
4
5 '''三种浅copy
6 p1=copy.copy(person)
7 p2=person[:]
8 p3=list(person)'''
9
10 p1=person[:]
11 p2=person[:]
12
13 p1[0]='Jonas'
14 p2[0]='James'
15
16 p1[1][1]=50
17
18 print(p1)
19 print(p2)
元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
names = ("jame","jack","eric")
它只有2个方法,一个是count,一个是index,完毕。
Enumerate
1 >>>
2 >>> a = [1,2,3]
3 >>> for i in enumerate(a):print(i)
4 ...
5 (0, 1)
6 (1, 2)
7 (2, 3)
8 >>>
字符串操作
1 name = "my name is {name} and i am {year} old"
2
3 print(name.capitalize())
4 print(name.casefold()
5 print(name.count("a"))
6 print(name.center(50,"-"))
7 print(name.endswith("ex"))
8 print(name.encode())
9 print(name.expandtabs(tabsize=30))
10 print(name.find('A'))
11 print(name[name.find("name"):])
12 print(name.format(name=;'Jonas',year=23))
13 print(name.format_map( {'name':'Jonas','year':12} ))
14 print('ab23'.isalnum())
15 print('abA'.isalpha())
16 print('1A'.isdecimal())
17 print('1A'.isdigit())
18 print('a 1A'.isidentifier())
19 print('33A'.isnumeric())
20 print('My Name Is '.istitle())
21 print('My Name Is '.isprintable()) #tty file ,drive file
22 print('My Name Is '.isupper())
23 print('+'.join( ['1','2','3']) )
24 print( name.ljust(50,'*') )
25 print( name.rjust(50,'-') )
26 print( 'Jonas'.lower() )
27 print( 'Jonas'.upper() )
28 print( '\nJonas''.lstrip() )
29 print( 'Jonas'\n'.rstrip() )
30 print( ' Jonas'\n'.strip() )
31 p = str.maketrans("abcde",'12345')
32 print("jonas mc".translate(p) )
33
34 print('jonas mc'.replace('j','J',1))
35 print('jonas mc'.rfind('j'))
36 print('1+2+3+4'.split('\n'))
37 print('1+2\n+3+4'.splitlines())
38 print('Jonas mc'.swapcase())
39 print('Jonas mc'.title())
40 print('Jonas mc'.zfill(50))
字典操作
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
info = {
'key1': "value1",
'key2': "value2",
'key3': "value3",
}
字典的特性
dict是无序的
key必须是唯一的, 天生去重
增加
>>> info["key4"] = "value4"
修改
>>> info['key1'] = "value1"
删除
>>> info.pop("key1")
>>> del info['key2']
>>> info.popitem()
>>> info
查找
>>> "key1" in info
>>> info.get("key2")
>>> info["key2"] #如果一个key不存在,就报错,get不会,不存在只返回None
1 cata= {
2 "Europe":{
3 "aaa": ["aaa"],
4 "bbb": ["bbb"]
5 },
6 "Japan":{
7 'ddd': ['dd', 'ddd'],
8 'eee': ['ee', 'eee']
9 },
10 "Mainland":{
11 'ggg': ['gg', 'ggg'],
12 'hhh': ['hh', 'hhh']
13 }
14 }
15 cata["Mainland"]["ggg"][1] += ", gggg+++++"
16 print(cata)
17 print(cata['Mainland'])
18 print(cata["Mainland"]["ggg"])
19 print(cata['Mainland']['ggg'][0])
20 print(cata['Mainland']['ggg'][1])
21 print(cata.values())
#values
>>> info.values()
#keys
>>> info.keys()
#setdefault
>>> info.setdefault("key5","Jonas")
>>> info.setdefault("key5","Jonas") #已存在则不修改
#update
>>> b = {1:'a',2:'b',3:'c'}
>>> info.update(b)
#items
info.items()
#fromkeys
>>> dict.fromkeys([1,2,3],'test')
循环dict
方法1
for key in info:
print(key,info[key])
方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
print(k,v)
集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
1 s = set([1, 2, 3, 4])
2 t = set([3, 4, 5, 6])
3
4 a = t | s # t 和 s的并集
5 b = t & s # t 和 s的交集
6 c = t – s # 求差集(项在t中,但不在s中)
7 d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
8 t.add('x') # 添加一项
9 s.update([1, 3, 9]) # 在s中添加多项
10 t.remove('3') # 删除一项:
11
12 len(s) #set的长度
13 x in s #测试x是否是s的成员
14 x not in s #测试x是否不是s的成员
15 s.issubset(t) #s <= t 测试是否s中的每一个元素都在t中
16 s.issuperset(t) #s >= t 测试是否t中的每一个元素都在s中
17 s.union(t)
18 s | t #返回一个新的set包含s和t中的每一个元素
19 s.intersection(t)
20 s & t #返回一个新的set包含s和t中的公共元素
21 s.difference(t)
22 s - t #返回一个新的set包含s中有但是t中没有的元素
23 s.symmetric_difference(t)
24 s ^ t #返回一个新的set包含s和t中不重复的元素
25 s.copy() 返回set “s”的一个浅复制
文件操作
对文件操作流程:
打开文件,得到文件句柄并赋值给一个变量
通过句柄对文件进行操作
关闭文件
基本操作
f = open('file1') # 打开文件
first_line = f.readline()
print(first_line) # 读一行
data = f.read() # 读取剩下的所有内容,文件大时不要用,返回字符串形式
#data = f.readlines() # 读取剩下的所有内容,文件大时不要用,返回列表形式
print(data) # 打印文件
f.close() # 关闭文件
打开文件模式
r,只读模式(默认)
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读;不存在则创建;存在则只追加内容;】
"+"表示可以同时读写某个文件
+,可读写文件。【可读;可写;可追加】
w +,写读
a +,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与r或r + 模式同使用)
rU
r + U
"b"表示处理二进制文件
rb
wb
ab
with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log', 'r') as f:
...
当with代码块执行完毕时,内部会自动关闭并释放文件资源。
with又支持同时对多个文件的上下文进行管理
with open('log1') as obj1, open('log2') as obj2:
pass


浙公网安备 33010602011771号