(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']
View Code

删除

1 >>> names.remove('99')
2 >>> print(names)
3 ['lisi', 'wangmazi', '88', '1', '2', '3', '4']
4 >>>
View Code

 弹出

 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 >>>
View Code

修改

1 >>> names[0] = 'lisan'
2 >>>
3 >>> print(names)
4 ['lisan', 'lisi', 'wangmazi', '88', '1', '2', '3', '4', '99']
5 >>>
6 >>>
View Code

扩展

1 >>> names.extend(b)
2 >>> print(names)
3 ['lisi', 'wangmazi', '88', '1', 11, 22, 33, 44]
4 >>>
5 >>>
View Code

浅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)        # 工厂函数
View Code

统计

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
View Code

排序与翻转

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 >>>
View Code

获取下表

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 >>>
View Code

 

二、元祖

也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表,它只有2个方法,一个是count,一个是index

1 >>> names2 = ('1','2','3','4')
2 >>> names2.count('1')
3 1
4 >>> names2.index('1')
5 0
6 >>>
View Code

 

三、字符串操作

>>> 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 >>>
View Code

删除

 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 >>>
View Code

>>> 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 >>>
View Code

循环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)
View Code

 购物车练习:

 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'])
>>>

六、文件操作

对文件操作流程


  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

打开文件的模式有:


  • 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

 

 

 

 

 

 

posted @ 2018-03-13 17:55  莱昂嘚  阅读(228)  评论(0编辑  收藏  举报