python的标准数据类型

  python中有六大标准数据类型:数字、字符串、列表、元组、字典、集合

1.字符串

 1 # 字符串为不可变数据类型
 2 # 字符串一旦创建不可修改
 3 # 字符串一旦修改或拼接,则会重新生成信字符串
 4 # 8位表示一个字节
 5 # utf8编码中汉字占3个字节,gbk编码中汉字占2个字节
 6 # Unicode中统一字符都占2个字节
 7 
 8 name = "   hgAlexHgzero \n wuzhihao   "
 9 
10 print("大小写转换效果:")
11 print(name.capitalize())                  # 首字母大写
12 print(name.swapcase())                    # 将字符串中的大小写互换
13 print(name.title())                       # 字符串中的每个单词首字母大写
14 print(name.upper())                       # 全部变大写
15 print(name.lower())                       # 全部变小写,只能转换26个英文字母
16 print(name.casefold())                    # 更为牛逼的全部变小写,不光支持26个英文字母,还支持其他非字母
17 print("*"*80)
18 
19 
20 print("判断开头结尾:")
21 print(name.endswith("zero"))              # 判断是否以zero字符串结尾
22 print(name.startswith("hg"))              # 判断是否以hg字符串开头
23 print("*"*80)
24 
25 
26 print("strip效果:")
27 print(name.strip())                       # 剔除字符串两端的空白
28 print(name.rstrip())                      # 剔除字符串右边的空白
29 print(name.lstrip())                      #剔除字符串左边的空白
30 print("*"*80)
31 
32 
33 print("查找find和index :")
34 print(name.find("A"))                     # 查找A,返回其索引,若找不到,则返回-1
35  # index 和 find 都有从左和从右开始找的方法,rfind() lfind()  rindex() lindex()
36 print("index为:",name.index("A"))        # 返回字符串的索引值,若找不到则返回错误
37 
38 
39 print("统计数量")
40 name.count("hgzero",3,9)                  # 在3到9的位置计数hgzero出现的次数
41 print("*"*80)
42 
43 
44 print("特殊效果:")
45 print(name.center(50,"*"))                # 将字符串放于50个支付内容的中间,其他空缺内容用*符号补充
46 print(name.ljust(20,"-"))                 # 占用20个字符串空位,name字符串靠左,未填满则用-补充
47 print(name.rjust(20,"-"))                 # 与ljust类似,name字符串靠右
48 print(name.zfill(20))                     # 占用20个字符串空位,name字符串未占用的空位则在前面补0
49 print("*"*80)
50 
51 
52 print("replace效果:")
53 print(name.replace("zero","Wuzhihao"))    # 用第二个参数来替换第一个参数,但是不会改变原来的字符串,只作为一次结果
54 # replace()的第三个参数表示要替换的次数,若不指定则表示替换所有
55 print("*" * 80)                           # 可用变量来接受这一次的结果
56 
57 print("partition效果:")
58 print(name.partition("zero"))             # 以zero将整个字符串分成3部分   zero前,zero,zero后   保存为列表
59 print("*"*80)
60 
61 print("split效果:")
62 print(name.split("H"))                    # 按照H字符将整个字符串进行切割,切割后H字符消失,切割后内容保存为列表形式
63 print(name.splitlines())                  # 按照行分隔,返回一个包含各行作为元素的列表,按换行来切割
64 print("*"*80)
65 
66 
67 print("join效果:")
68 b = "-"
69 print(b.join(name))                       # 将字符串b 插入到字符串变量name中的每个字符之间,形成一个新的字符串
70 print("*".join(name))
71 print("*"*80)
72 
73 
74 print("字符串类型判断:")
75 print(name.isdigit())                     # 判断所有字符是否是字符
76 print(name.isalpha())                     # 判断所有字符是否为字母
77 print(name.isalnum())                     # 判断所有字符是否为数字和字母的组合
78 print(name.isspace())                     # 判断是否为纯空格
79 print("*"*80)
80 
81 
82 print("expandtabs方法的使用:")
83 like = "name:wuzhihao\tage:20\taddr:China\t"
84 print(like.expandtabs(15))               # 每次以15个字符位为一单位,直至出现\t ,每一单位中的除了字符串的空白位用空格填充
85 
86 
87 print("    7个基本魔法:join() , split() , find() , strip() , lower() , upper() , replace()   ")
88 print("\n"*3)
89 
90 
91 love = "I love you forever"
92 print(len(love))                          # 获取字符串的长度
93 print(love[4])                            # 通过下标的方法截取字符串
94 print(love[2:6])                          # 通过切片的方式截取字符串
95 
96 
97 print("range方法")
98 print(range(0, 20, 2))                      # 以2为步长(每隔一个数),打印在0到20的范围内(不包括20)的值
99 # python2中range方法立即创建,而python3中range只在要循环迭代的时候才创建

2.列表

 1 # 可变类型(mutable):列表,字典
 2 # 不可变类型(unmutable):数字,字符串,元组
 3 
 4 # python中 字符串、列表、元组、字典、集合都是可迭代对象
 5 # 列表是有序的
 6 
 7 names = ['hgzero', 'wuzhihao', 'zero', 'wuzhihao', 'hg', 'hao']
 8 
 9 print("切片操作")
10 print(names[0:4])                        # 列表的切片操作不包括最后一个值
11 print(names[0:4:2])                      # 切片的第三个参数代表 每隔1个数取一个值
12 print(names[:4])
13 print(names[1:])
14 print(names[:-1])                        # 取值不包括最后一个值
15 print("#" * 50)
16 
17 
18 print("三种增加的方法:")
19 print("追加")
20 names.append("wu")                       # 在列表尾部追加
21 names.append("zhi")
22 names.append("hao")
23 print(names)
24 print("插入")
25 names.insert(2, "插入的值")              # 在2索引的位置插入要添加的值
26 print(names)
27 print("扩展")
28 b = [1, 2, 3, 5, 9, 7, 8]
29 names.extend(b)                         # 将b列表合并到names列表中(尾部添加),形成一个新的列表
30 print(names)
31 
32 
33 print("三种删除的方法")
34 del names[2]
35 del names[3:5]
36 print(names)
37 names.remove("hgzero")                  # 删除指定的元素
38 print(names)
39 names.pop()                             # 删除列表的最后一个值并返回删除的值,也可加上参数表示删除指定的索引的值并返回删除的值
40 print(names)
41 
42 
43 print("修改")
44 names[2] = "修改的值"
45 names[3:6] = ["first", "second", "thrid"]    # 批量修改
46 print(names)
47 
48 
49 print("获取下标")
50 print(names.index("wuzhihao"))          # 只返回找到的第一个下标
51 
52 
53 print("统计")
54 print(names.count("wuzhihao"))
55 
56 
57 print("排序和翻转")
58 b.sort()     # 排序
59 print(b)
60 b.reverse()  # 反转
61 print(b)
62 
63 
64 print("浅拷贝")
65 v = names.copy()
66 print(v)
67 
68 
69 print("清空")
70 names.clear()
71 print(names)

 

3.元组

 1 # 元组和列表差不多,但是元组一旦创建,便不能再修改(增加、修改、删除),所以又叫只读列表
 2 # 元组和列表可以互换   list()   tuple()
 3 
 4 # 元组的末尾最好加上一个逗号
 5 
 6 names = ("hgzero","wuzhihao","zero","wuzhihao",)
 7 
 8 print("元组的切片")
 9 print(names[1:3])
10 
11 
12 print("元组和列表的转换")
13 ls = list(names)
14 print(ls)
15 tu = tuple(ls)
16 print(tu)
17 
18 
19 print("元组只有2个查的方法,一个是count,另一个是index")
20 print(names.count("wuzhihao"))
21 print(names.index("zero"))
22 
23 
24 print("元组为可迭代对象")
25 print("*".join(names))         # 当元组中全部为字符串时,可以用join方法来转换
26 
27 
28 print("元组是有序的")
29 tu = (111,"alex",(11,22),[(33,44)],True,33,55)
30 print(tu[3][0][0])
31 
32 
33 print("元组的不能修改只是针对元组的一级元素,但一级元素中的内容可用修改")
34 tu[3][0]="wuzhihao"
35 print(tu)

4.字典

 1 # 字典存储为 键值对 形式
 2 # 字典dick  是无序的
 3 
 4 # 字典的键key  必须是唯一的
 5 # 字典中的key必须为不可变数据类型
 6 # 布尔值可以作为字典的key
 7 
 8 # 可变类型(mutable):列表,字典
 9 # 不可变类型(unmutable):数字,字符串,元组
10 
11 info = {
12     "stu1": "hg zero",
13     "stu2": "wu zhihao",
14     "stu3": "hao wu",
15 }
16 
17 
18 print("增加:")
19 info['stu4'] = "wuzhihao"
20 print(info)
21 
22 print("字典的扩展:")
23 b = {"A": 1, "B": 2, "C": 3}
24 info.update(b)                         # 将b字典中的内容扩展到info中
25 print(info)
26 info.update(k1=123, k2=456, k3=789)      # update() 也支持在括号中直接使用=进行键值对赋值,其会自动转换成字典的形式,类似**kwargs
27 print(info)
28 
29 print("删除(两种):")
30 info.pop("stu4")                      # pop() 可传入第二个参数(默认值),表示若没有指定的key,则返回默认值
31 print(info)
32 del info["stu3"]
33 print(info)
34 
35 print("修改:")
36 info['stu4'] = "Tom"
37 print(info)
38 
39 print("查找(三种):")
40 print("stu1" in info)                  # 判断名为stu1的键是否在info字典中
41 print(info.get("stu2"))                # 获取字典中键为stu2的值
42 print(info.get("stu9"))                # 若要获取的键在字典中不存在,则返回None
43 print(info["stu2"])                    # 这样获取对应键的值,若字典中不存在则会报错
44 
45 
46 print("字典中的其他方法:")
47 print(info.values())                   # 获取字典中的所有的值
48 print(info.keys())                     # 获取字典中的所有的键  键和值都可用用for循环来打印出来
49 print(info.items())                    # 获取字典中的所有的键和值
50 
51 info.setdefault("stu7", "Alex")         # 设置默认的键值对
52 print(info)
53 
54 v = dict.fromkeys([1, 2, 3, 4], "hgzero")  # 构建一个字典,将第一个参数迭代为key , 第二个参数为每个key的value
55 print(v)
56 
57 
58 print("字典的循环:")
59 for key in info:
60     print(key, info[key])
61 
62 for k, v in info.items():              # 会先把dict字典转换为list列表,数据量大时不用
63     print(k, v)

5.集合

 1 # 集合:去重性 ,  将一个列表转换成集合,就自动去重了
 2 # 集合是无序的
 3 # 集合是可变类型,但是不能修改,只能增加或者删除
 4 
 5 a = {3, 6, 4, 7, 8}          # 定义集合的方式
 6 s = set([3, 5, 9, 10, 2])    # 可用set()方法来生成集合
 7 s2 = set("Hello")
 8 
 9 
10 print("定义一个不可变类型的集合:")
11 f = frozenset({2, 3, 5, 6, 7})    # 此处定义了一个不可变类型的集合,不可增加或者删除其中的值
12 print(f)
13 for i in f:
14     print(i)
15 
16 print("添加(两种):")
17 s.add("x")                   # 添加一项,且一次只能添加一个值
18 s.update([12, 45, 77])       # 添加多项,可以传进各种可迭代对象,统一迭代添加到集合中
19 s.update(s2)                 # 更新
20 print(s)
21 
22 print("删除(三种):")
23 s.pop()                      # 因为集合是无序的,所以pop()是随机删除
24 s.remove("H")                # 删除一项,若不存在会报错
25 s.discard("e")               # 若不存在不会报错
26 print(s)
27 
28 print("拷贝:")
29 b = a.copy()
30 print(b)
31 
32 print("清空:")
33 a.clear()
34 print(a)
35 
36 print("判断:")
37 print(2 in s)                # 判断2是否在s集合中
38 print(2 not in s)
39 
40 print("获取集合的长度:")
41 print(len(s))                # 获取集合的长度
42 
43 
44 print("集合中的交、并、差、对称差  集:")
45 # a = s | s2                 # 两者之间的并集
46 x = a.union(s2)
47 
48 # b = s & s2                 # 两者之间的交集
49 y = s.intersection(s2)
50 
51 # c = s - s2                 # 差集 (在s中,但不在s2中)
52 z = s.difference(s2)
53 
54 # d = s ^ s2                 # 对称差集 (在s或s2中,但不会同时出现在二者中)
55 w = s.symmetric_difference(s2)
56 
57 
58 print("两个集合之间关系的判断:")
59 a1 = {1, 2, 3, 4, 5}
60 a2 = {1, 2, 3, 4, 5, 6, 7, 8}
61 print(a1.isdisjoint(a2))     # 判断两个集合中是否有交集,如果没有这位True,如果有则为False
62 print(a1.issubset(a2))       # 判断a1是否为a2的子集,若是则为真,否则为假
63 print(a1.issuperset(a2))     # 判断a1是否为a2的父集,若是则为真,否则为假

 

猜你喜欢

转载自www.cnblogs.com/hgzero/p/9482652.html