python学习day3------列表、元组、字符串操作

列表是有序的,支持增删改查,可以嵌套列表、字典(任何东西)

元组是有序的,只读列表

字符串的操作,可查,不可修改(本质新新的内容覆盖了原来的)

字典是无序的,通过K:V找元素,可以嵌套列表、字典

集合是无序的

 

一、列表

变量名后加中括号[],接下来介绍对列表进行查操作

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 test = []#列表的命名形式
 6 
 7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
 8 print(name[0],name[2])#取出已知位置的数据,因为计算机在存储数据的时候是以0为开始位置
 9 #>>>>zhangsan wangmazi
10 
11 #
12 #切片
13 print(name[1:3])#从计算机位第一个位取到第二位:顾首不顾尾,
14 #>>>>['lisi', 'wangmazi']
15 
16 
17 print(name[4])#在知道列表有多长的时候用这个方法可以取到列表最后一位
18 #>>>>gousheng
19 
20 
21 print(name[-1])#在不知道长度有多长的时候用这个方法可以取到最后一位
22 #>>>>gousheng
23 
24 
25 print(name[-2])#亦可理解位从0往左数
26 #>>>>chenwu
27 
28 
29 print(name[-2:])#即便是写的是负数的位置表示,也是自左往右数,
30                 # 但是有一个机制就是顾首不顾尾,
31                 # 但我想取最后一位的时候就会被忽略掉,
32                 # 所以这个时候在冒号后面什么都不写就可以
33 #>>>>['chenwu', 'gousheng']
34 
35 
36 print(name[0:3])
37 #>>>>['zhangsan', 'lisi', 'wangmazi']
38 print(name[:3])#这两个效果一样,前面若是0的话就可以省略不写
39 #>>>>['zhangsan', 'lisi', 'wangmazi']
View Code

对列表进行增、替换、删等操作

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 test = []#列表的命名形式
 6 
 7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
 8 #
 9 #追加数据
10 name.append("quandan")
11 #>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan']
12 
13 #插在指定位置
14 name.insert(1,"mingzi")#想把数据插在第几机器位就直接写
15 #>>>>['zhangsan', 'mingzi', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan']
16 
17 #
18 name[2] = "qiangzi"#把在机器位置2上的lisi换下来用qiangzi
19 #>>>>['zhangsan', 'mingzi', 'qiangzi', 'wangmazi', 'chenwu', 'gousheng', 'quandan']
20 
21 #
22 name.remove("wangmazi")#在知道名字的情况下删除wangmazi
23 del name[3] #删除机器位置3上的名字
24 name.pop()#默认不输入机器位置就删除最后一个,如果输入机器位就跟del name[3]一样
25 print(name)
View Code

清空、反转、排序、扩展

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 test = []#列表的命名形式
 6 
 7 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng","lisi"]
 8 #查找wangmazi位置
 9 print(name.index("wangmazi"))
10 #>>>> 2
11 #找出上述找到的位置删的名字
12 print(name[name.index("wangmazi")])
13 #>>>>wangmazi
14 
15 #列表允许出现多个名字一样的
16 print(name.count("lisi"))#查找叫lisi的有几个
17 
18 #name.clear()#清空列表
19 #name.reverse()#反转列表
20 #name.sort()#排序,按照ascll码进行排序
21 name1 = [1,2,3,4]
22 name.extend(name1)#扩展,将name1添加到name后面,name1没有删除
23 print(name)
24 #>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'lisi', 1, 2, 3, 4]
View Code

复制copy、深copy

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 import  copy
 5 
 6 test = []#列表的命名形式
 7 #name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
 8 #因为他们共同指向内存地址,修改name2,name也会变
 9 name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"]
10 
11 name2 = name.copy()#复制一份copy只是浅得复制了一些,只复制第一层列表
12 name[2] = "王麻子"
13 name[3][0] = "ERIC"
14 print(name,"\n",name2)
15 
16 #这个是赋值
17 name2 = name
18 #深copy就是完全复制,需要添加copy模
19 name2 = copy.deepcopy(name)
View Code

分位切片

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 import  copy
 5 
 6 test = []#列表的命名形式
 7 #name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
 8 #因为他们共同指向内存地址,修改name2,name也会变
 9 name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"]
10 #跳两位进行切片
11 print(name[0:-1:2])#这个语句得作用就是从0到-1位每跳两位进行切
View Code

二、元组

查找数据的位置

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4     
 5     
 6 #元组就两个功能count,index,得到机器位
 7 name = ("zhangsan","lisi","wangmazi")
 8 print(name.count("zhansgan"))
 9 #>>>>0
10 print(name.index("lisi"))
11 #>>>>1
View Code

 三、字符串操作

首字母大写

统计字符串有几个字母

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 #字符串操作
 5 name = "my {name} is {eric}"
 6 #首字母大写
 7 print(name.capitalize())
 8 #>>>Eric
 9 
10 #统计字符串---下面的程序是统计字符串a有多少个
11 print(name.count("a"))
12 #>>>>0
13 
14 #将字符串用50个*包裹着写在中间
15 print(name.center(50,"*"))
16 #>>>>***********************eric**********************
17 
18 #判断字符串是不是以ic结尾
19 print(name.endswith("ic"))
20 #>>>>True
21 
22 #在字符串中写一个tab键,它将tab转换多少个空格
23 #name ="eri\tc"
24 print(name.expandtabs(tabsize=30))
25 #>>>>eri                           c
26 
27 #找字符串相应元素的机器位数
28 print(name.find("name"))
29 #>>>>3
30 
31 #判断是否有阿拉字符
32 print("abc123".isalnum())
33 #判断是否包含英文字符(返回True或False)
34 print("asA".isalpha())
35 #判断是否为10进制
36 print("1A".isdecimal())
37 #判断是不是一个整数
38 print("1A".isdigit())
39 #判断是不是一个合法的标识符(变量名)
40 print("1A".isidentifier())
41 #判断是不是小写
42 print("aA".islower())
43 #检测字符串是否只由数字组成。这种方法是只针对unicode对象。
44 print("1a".isnumeric())
45 #判断是不是标题,判断标准是每个首字母大写
46 print("My name is title".istitle())
47 #设备终端文件用此方法判断
48 print("My name is ".isprintable())
49 #判断是不是全部大写
50 print("aD".isupper())
51 #将字符串区分开
52 print("+".join(["1","2","3"]))
53 #>>>>1+2+3
54 #保证我的字符串长度为50,不够的在后面以*补全
55 print(name.ljust(50,"*"))
56 #保证我的字符串长度为50,不够的在前面补上-
57 print(name.rjust(50,"-"))
58 #把大写变成小写
59 print("Eric".lower())
60 #把小写换成大写
61 print("Eric".upper())
62 #从左边去掉空格或者回车
63 print("\nEric".lstrip())
64 #从右边去掉空格或者回车
65 print("Eric\n".rstrip())
66 #去掉两边的空格或者回车
67 print("\nEric\n".strip())
68 #命名的时候前后的位数一致,把字母与数字对应,然后显示p如果有对应的字母换作后面的显示(嗯古时候密文一样)
69 p = str.maketrans("abcde","12345")
70 print("Eric".translate(p))
71 #>>>>Eri3
72 
73 #替换(把c换成大写的C)后面还可以跟一个参数。替换几个(print("Eric c".replace("c","C",1)))
74 print("Eric c".replace("c","C"))
75 #找到最后边那个值得下标返回
76 print("eric ic".rfind("c"))
77 #把字符串按照空格(默认)分成列表
78 print("eric is ".split())
79 #把字符串按照行分
80 print("eric\n c".splitlines())
81 #全部变成大写
82 print("eric c".swapcase())
83 #前边不够50位自动用0填充
84 print("eric c".zfill(50))
View Code

四、字典操作

增删查改

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 #Key-value
 6 info = {
 7     'stu1101': "TengLan Wu",
 8     'stu1102': "LongZe Luola",
 9     'stu1103': "XiaoZe Maliya",
10 }
11 #字典是无需得没下标,有key
12 print(info)
13 #改字典stu1101(若不存在则创建)
14 info["stu1101"] = "武藤兰"
15 #查字典
16 print(info["stu1101"])
17 #删除字典
18 del info["stu1101"]
19 #指定删除
20 info.pop("stu1101")#标准姿势
21 #随机删除
22 info.popitem()
23 
24 
25 #
26 print(info.get("stu1103"))#得到其key对应得值
27 print("stu1103" in info)#info.has_key("1103") in py2.x
View Code

取值

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 #Key-value
 6 info = {
 7     'stu1101': "TengLan Wu",
 8     'stu1102': "LongZe Luola",
 9     'stu1103': "XiaoZe Maliya",
10 }
11 b = {
12     'stu1101': "Eric",
13     1:3,
14     2:5
15 }
16 
17 #升级:有相同得key就覆盖,没有得就创建
18 info.update(b)
19 print(info)
20 
21 #初始化一个新的字典(作用跟copy一样)
22 c = dict.fromkeys([6,7,8],[1,{"name":"eric"},666])
23 print(c)
24 c[7][1]["name"] = "ASD"
25 print(c)
26 #{8: [1, {'name': 'eric'}, 666], 6: [1, {'name': 'eric'}, 666], 7: [1, {'name': 'eric'}, 666]}
27 #{8: [1, {'name': 'ASD'}, 666], 6: [1, {'name': 'ASD'}, 666], 7: [1, {'name': 'ASD'}, 666]}
28 
29 #字典变成列表
30 print(info.items())
31 
32 av_catalog = {
33     "欧美":{
34         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
35         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
36         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
37         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
38     },
39     "日韩":{
40         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
41     },
42     "大陆":{
43         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
44     }
45 }
46 #修改
47 av_catalog["大陆"]["1024"][1] = "可以在国内做镜像"
48 
49 #只打印关键字
50 print(info.keys())
51 
52 #先去taiwan里取值,如果没有就创建,有就把它取出来
53 av_catalog.setdefault("taiwan",{"www.baidu.com":[1,2]})
54 print(av_catalog  )
View Code

字典的循环

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 #Key-value
 6 info = {
 7     'stu1101': "TengLan Wu",
 8     'stu1102': "LongZe Luola",
 9     'stu1103': "XiaoZe Maliya",
10 }
11 
12 #字典的循环
13 for i in info:
14     print(i,info[i])
15 
16 #先转成列表在循环输出
17 for k,v in info.items():
18     print(k,v)
19 
20 #前者快后者慢
View Code

 五、集合

集合的运算:交并补差,对称差集

 1 #!/usr/bin/env python
 2 #-*- Coding:utf-8 -*-
 3 # Author:Eric.Shen
 4 
 5 #集合也是无序的
 6 list1 = [1,5,9,4,8,3,45,7,]
 7 list1 = set(list1)
 8 
 9 list2 = set([2,6,5,7,9,1,56,4])
10 print(list1,list2)
11 
12 #交集,list1与2的交集
13 print(list1.intersection(list2))           #运算符表达交集 a = t & s
14 #并集1与2的并集
15 print(list1.union(list2))                  #运算符表达并集 b = t | s
16 #对称(反向)差集   交集的补集,全集是1和2 这是除去他们的交集剩下的元素
17 print(list1.symmetric_difference(list2))   #运算符表达对称差集 d = t ^ s
18 #差集1与2的差集,1与 1和2的交集之外的元素
19 print(list1.difference(list2))             #运算符表达交集 c = t - s
20 
21 
22 #子集
23 list3 = set([1,3,7])
24 
25 #3是1的子集,返回为True
26 print(list3.issubset(list1))
27 #1是3的父集,返回为True
28 print(list1.issuperset(list3))
29 
30 #3与4有没有交集(如果3和4没有交集则返回true)
31 list4 = set([5,6,8])
32 print(list3.isdisjoint(list4))
View Code

集合的增删

1 #集合的添加  无序的
2 list1.add(999)
3 list1.update([999,77,55])
4 print(list1)
5 
6 #集合的删除
7 print(list1.pop())#删除任意的,并返回删除的那个内容
8 print(list1.remove(44444))#删除不存在的会报错
9 list1.discard(999999)#删除不存在的不会报错
View Code

 

posted @ 2018-02-01 15:12  ankuo  阅读(319)  评论(0编辑  收藏  举报