(2)P_PY(草稿)
目录:
一、列表操作
二、元祖
三、字符串
四、字典
五、集合操作
六、文件操作
七、
一、列表操作
# 定义一个列表
names = ["laiang","gf","renj","chz","yif"]
1 >>> names = ['zhangsan','lisi','wangmazi',]
2 >>>
3 >>> names[0] #通过索引取值
4 'zhangsan'
5 >>> names[2]
6 'wangmazi'
7 >>>
8 >>> names[-1]
9 'wangmazi
一次取多个元素
>>> names = ['zhangsan','lisi','wangmazi','1','2','3','4']
>>>
>>> names[1:3]
['lisi', 'wangmazi']
>>>
>>> names[:3]
['zhangsan', 'lisi', 'wangmazi']
>>> names[3:]
['1', '2', '3', '4']
>>>
>>> names[0::2]
['zhangsan', 'wangmazi', '2', '4']
>>>
>>>
追加
1 >>> names.append('99') 2 >>> print(names) 3 ['zhangsan', 'lisi', 'wangmazi', '1', '2', '3', '4', '99']
插入
1 >>> names.insert(3,'88') 2 >>> print(names) 3 ['zhangsan', 'lisi', 'wangmazi', '88', '1', '2', '3', '4', '99']
删除
1 >>> names.remove('99') 2 >>> print(names) 3 ['lisi', 'wangmazi', '88', '1', '2', '3', '4'] 4 >>>
弹出
1 >>> print(names) 2 ['lisi', 'wangmazi', '88', '1', '2', '3', '4'] 3 >>> 4 >>> 5 >>> 6 >>> 7 >>> names.pop() 8 '4' 9 >>> names.pop() 10 '3' 11 >>> names.pop() 12 '2' 13 >>>
修改
1 >>> names[0] = 'lisan' 2 >>> 3 >>> print(names) 4 ['lisan', 'lisi', 'wangmazi', '88', '1', '2', '3', '4', '99'] 5 >>> 6 >>>
扩展
1 >>> names.extend(b) 2 >>> print(names) 3 ['lisi', 'wangmazi', '88', '1', 11, 22, 33, 44] 4 >>> 5 >>>
浅copy与深copy
1 import copy 2 names = ["laiang","gf","renj",["chz","yif"]] 3 #names2 = names.copy() 4 names2 = copy.deepcopy(names) #导入copy 模块 5 print(names) 6 print(names2) 7 names[0] = "llx" 8 print(names) 9 print(names2) 10 names[3][0] = "陈总" #深copy 与浅copy 第二个列表相当于只是copy了内存地址 11 # 当修改的时候names2也会修改,相当于是共享 12 print(names) 13 print(names2) 14 15 16 # import copy 17 # names3 = copy.deepcopy(names) 18 # print(names3) 19 ''' 20 21 import copy 22 person = ['name',['a',100]] 23 24 p1 = copy.copy(person) 25 p2 = person[:] #实现浅copy的第二种方式 26 p3 = list(person) # 工厂函数
统计
1 >>> names 2 ['lisi', 'wangmazi', '88', '1', 11, 22, 33, 44] 3 >>> 4 >>> names.count(1) 5 0 6 >>> names.count(11) 7 1 8 >>> names.count(22) 9 1
排序与翻转
1 >>> names.sort() 2 >>> names 3 [11, 22, 33, 44, '1', '88', 'lisi', 'wangmazi'] 4 >>> 5 >>> names.reverse() 6 >>> names 7 ['wangmazi', 'lisi', '88', '1', 44, 33, 22, 11] 8 >>>
获取下表
1 >>> names 2 ['wangmazi', 'lisi', '88', '1', 44, 33, 22, 11] 3 >>> 4 >>> names.index('88') 5 2 6 >>> 7 >>> names.index(22) 8 6 9 >>>
二、元祖
也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表,它只有2个方法,一个是count,一个是index
1 >>> names2 = ('1','2','3','4') 2 >>> names2.count('1') 3 1 4 >>> names2.index('1') 5 0 6 >>>
三、字符串操作
>>> name3 = 'laiangnadei'
>>> name3
'laiangnadei'
>>> name3.capitalize() #首字母大写
'Laiangnadei'
>>> name3.center(20,"-")
'----laiangnadei-----' #以这样的格式输出
>>>
>>> name3.count('a') #统计字符串里有几个a
3
>>>
>>> name3.endswith('ei') # 判断字符串是否已“ei”结尾
True
>>>
name = "my name is laiang"
print(name.capitalize()) # 首字母大写
print(name.count('a'))
print(name.center(50,'-')) # 把name 放到中心,前后各50个-
print(name.endswith("al"))
print(name.isalnum())
print(name.ljust(50,'*'))
print(name.rjust(50,'-'))
print('laiang'.lower()) #小写转换
print('laiang'.upper()) #大写转换
四、字典
字典一种key - value 的数据类型
字典的特性:
1、dict是无序的
2、key必须是唯一的,天生去重
修改
1 >>> info 2 {'k3': '3', 'k2': '2', 'k1': 'a', 'k4': '4'} 3 >>> 4 >>> info['k2'] = '22' 5 >>> 6 >>> info 7 {'k3': '3', 'k2': '22', 'k1': 'a', 'k4': '4'} 8 >>> 9 >>>
删除
1 >>> info 2 {'k3': '3', 'k2': '22', 'k1': 'a', 'k4': '4'} 3 >>> 4 >>> info.pop('k4') 5 '4' 6 7 8 >>> del info['k3'] 9 >>> 10 >>> 11 >>> info 12 {'k2': '22', 'k1': 'a'} 13 >>>
>>> info
{'k2': '22', 'k1': 'a'}
>>>
>>> info.popitem() #随机删除
('k2', '22')
>>>
查找
1 >>> info 2 {'k3': '3', 'k1': 'a', 'k5': '5', 'k4': '4'} 3 >>> 4 >>> 5 >>> 6 >>> 7 >>> info 8 {'k3': '3', 'k1': 'a', 'k5': '5', 'k4': '4'} 9 >>> 10 >>> "k3" in info 11 True 12 >>> 13 >>> info.get('k3') 14 '3' 15 >>> 16 >>> info['k3'] 17 '3' 18 >>> info['k9'] 19 Traceback (most recent call last): 20 File "<stdin>", line 1, in <module> 21 KeyError: 'k9' 22 >>>
循环dict
1 #方法1 2 for key in info: 3 print(key,info[key]) 4 5 #方法2 6 for k,v in info.items(): #会先把dict转成list,数据里大时莫用 7 print(k,v)
购物车练习:
1 #实现打印商品详细信息,用户输入商品名和购买个数, 2 #则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入 3 # Author:land 4 5 shopping=[] #定义一个购物车的控列表,等待添加商品 6 #定义商品列表 7 shopping_msg={ 8 'apple':20, 9 'baoma':200000, 10 'mac':1000, 11 'lenovo':300, 12 'chicken':900, 13 } 14 15 while True: 16 for item in shopping_msg: #对商品列表循环取值 17 print(item,shopping_msg[item]) #打印key 及 value 18 choice=input('Inpute name of commodity>>:').strip() #让用户输入商品选择 19 if len(choice) == 0 or choice not in shopping_msg: #对用户的输入进行判断 20 print('Name of commdity is error>>:') 21 continue #如果输入非法 让其一直从新输入 22 23 while True: #本次循环是在商品名输入正确的情况下,购买数量输入非法,然后只对购买数量进行从新输入 24 num = input('The num of purchase>>:').strip() 25 if num.isdigit(): #对购买数量进行判断是否为数字 26 break 27 28 shopping.append((choice,shopping_msg[choice],int(num))) #将信息append到购物车列表中 29 print(shopping) #打印购物车信息
1 #字典练习 2 #有如下值集合 [11,22,33,44,55,66,77,88,99,90...], 3 #将所有大于 66 的值保存至字典的第一个key中, 4 #将小于 66 的值保存至第二个key的值中 5 sets=[11,22,33,44,55,66,77,88,99,90,] 6 dic1={'key1':[],'key2':[]} 7 for num in sets: 8 if num > 66: 9 dic1['key1'].append(num) 10 else: 11 dic1['key2'].append(num) 12 print(dic1)
1 ''' 2 #统计s='hello alex alex say hello sb sb'中每个单词的个数 3 #结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2} 4 5 s='hello alex alex say hello sb sb' 6 words=s.split() #s.split()得到一个单词的列表 7 d={} #定义一个空字典 8 9 for word in words: #循环这个单词列表 10 d.setdefault(word,s.count(word)) #对循环到的每一个单词在列表里进行判断次数 11 #然后增加到d 字典里,如果遇到重复的单词不做任何修改 12 print(d) 13 14 #{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2} #最后得到的结果 15 '''
五、集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
>>> s = set([1,2,3,4,5,6,])
>>> s
set([1, 2, 3, 4, 5, 6])
>>>
>>>
>>> t = set('love')
>>>
>>> t
set(['e', 'l', 'o', 'v'])
>>>
>>> a = t | s #求并集
>>> a
set([1, 2, 3, 'e', 5, 6, 'l', 'o', 'v', 4])
>>>
>>> b = t & s #求交集
>>> b
set([])
>>>
>>> c = t - s #求差集
>>> c
set(['e', 'l', 'o', 'v'])
>>>
>>> d = t ^ s # 对称差集
>>> d
set([1, 2, 3, 4, 5, 6, 'v', 'e', 'l', 'o'])
>>>
六、文件操作
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
打开文件的模式有:
- 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