python基础二(基本数据类型)

  python的基本数据类型:数字、字符串、列表、元祖、字典、集合

一、基本数据类型

1.1 数字int

  数字主要是用来计算用的,使用方法并不多。

1 # bit_length() 当十进制用二进制表示的时候,最少的使用二进制的位数
2 i = 3
3 print(i.bit_length())
4 """
5     1  0000 0001
6     2  0000 0010
7     3  0000 0011 两位
8     5  0000 0101
9 """

1.2 布尔型 bool

  布尔型就两种:True(真),False(假).

  真 非 0  True

  假  0     False

 注:在使用While(1)这样写执行效率比While(True) 高

1 #int ------>bool 只要是0 -----> False 其余的就是True
2 # while True:
3 #     pass
4 # while 1:
5 #     效率更高

1.3字符串Str

 1.3.1 字符串的索引与切片

  索引即下标,就是字符串组成的元素从第一个开始,初始索引从0开始以此类推

1 s = "ABCDGHJHSJKAH"
2 #索引 第一位是0 变量名[index]
3 print(s[0])
4 print(s[1])

  切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)

1 a = 'ABCDEFGHIJK'
2 print(a[0:3])
3 print(a[2:5])
4 print(a[0:]) #默认到最后 
5 print(a[0:-1]) # -1 是列表中最后一个元素的索引,但是要满足顾头不顾腚的原则,所以取不到K元素
6 print(a[0:5:2]) #加步长
7 print(a[5:0:-2]) #反向加步长

  1.3.2 字符串的常见方法

 1 #字符串的索引与切片
 2 # s = "ABCDGHJHSJKAH"
 3 # #索引 第一位是0 变量名[index]
 4 # print(s[0])
 5 # print(s[1])
 6 # #字符串的切片: 顾头不顾尾 取不到最后一个值
 7 # s3=s[0:-1]
 8 # print(s3)
 9 # # #获取最后一位
10 # # print(s[-1])
11 # # #获取倒数第二位
12 # # print(s[-2])
13 # # print(s[0:s.__len__()]) #或者
14 # # print(s[:])
15 # # print(s[0:])
16 # #跳着取0 2 4 加步长 s[首:尾:步长]
17 # # s10=s[0:5:2]
18 # # print(s10)
19 # #倒着取
20 # # s11=s[4:0:-1] #顾头不顾尾
21 # # print(s11)
22 # # print(s[3::-1])
23 # # #倒序取出
24 # # print(s[-1::-1])#或者print(s[::-1])
25 # 字符串的操作
26 s = "alexWusir"
27 # 首字母大写
28 print(s.capitalize())
29 
30 # 全部大写
31 print(s.upper())
32 
33 # 全部小写
34 print(s.lower())
35 
36 # 大小写翻转
37 print(s.swapcase())
38 # 乘号或者空格或者数字 隔开 隔开的单词首字母大写 并且保留空格
39 s="alejdkgon-wusir  "
40 print(s.title())
41 # 内容居中,总长度,空拔出填充后面的填充物 #
42 print(s.center(20,"#"))
43 # \t 8 16 ... 如果没有内容 补空格
44 print(s.expandtabs())
45 
46 # 公共方法
47 print(len(s))
48 # 判断前两位由什么组成
49 print(s.startswith("al")) # 判断前两位以什么开头
50 # 判断字符串含有y 并返回元素的索引 找不到返回-1
51 # 以jdk在下标3到6之间检索
52 print(s.endswith('jdk',3,6))
53 print(s.find("y"))
54 # index 找不到报错
55 # 报错内容:ValueError: substring not found
56 print(s.index("t"))
57 # 去空格
58 print(s.strip())
59 s = ";alex;wusir;taibai" # str------>list
60 # 并且会返回一个list
61 print(s.split(";")) # 一分为2
62 # format 的三种玩儿法  格式化输出
63 res = '{}{}{}'.format('egon',18,'male')
64 print(res) #egon18male
65 res = '{1}{0}{2}'.format('egon',18,'male')
66 print(res) #18egonmale
67 res = '{name}{age}{gender}'.format(gender='male',name='egon',age=18)
68 print(res) #egon18male
69 
70 # replace
71 msg = 'I love China China'
72 # I love female China
73 print(msg.replace('China','female',1))
74 # I love female female
75 print(msg.replace('China','female',2))
76 
77 # is 系列
78 msg = 'I have much money 12343212,just a joke -_-'
79 # msg 是由纯字母组成的嘛 False
80 print(msg.isalpha())
81 # msg 是由纯数字组成的嘛 # False
82 print(msg.isdigit())
83 # msg 是由字母数字混合组成的嘛
84 # False
85 print(msg.isalnum())
字符串的常见操作方法

1.4 元祖

  元祖被称为只读列表,即数据可以被查询到,但是不可以被修改。所以,字符串的切片操作同样适合于元祖

1 # 元祖 只读列表,可循环查询 可切片...
2 # 儿子不可以改,孙子可能可以改
3 tu = (1,2,3,"alex",[2,3,4,"taibai"],"egon")
4 # 修改孙子的元素
5 tu[4][3] = tu[4][3].upper()
6 tu[4].append("goodMan")
7 print(tu)
8 for i in tu:
9     print(i)

 1.5 列表

  列表是python中的基本数据类型之一,其他语言中也有类似的数据类型。比如JS中的叫数组。列表是以[]括起来,每个元素之间以逗号隔开,列表里面可以存放各种数据类型 比如:

1 li = ['alex',1,True,[1,2,3],(4,5,6),{'name','tom'}]

  列表相较于字符串,不仅可以存储不同的数据类型,而且可以存储大量数据。而且列表是有序的,有索引值,可切片,方便存储。

 1.5.1 、增

 1 li = [1,'a','b',2,3,'a']
 2 # insert() 按照索引去追加
 3 # li.insert(0,55)
 4 # [55, 1, 'a', 'b', 2, 3, 'a']
 5 # append() 直接追加到最后面
 6 # li.append('hello')
 7 # [55, 1, 'a', 'b', 2, 3, 'a', 'hello']
 8 # extend() 迭代的去增加
 9 # li.extend(['q','w','e'])
10 # li.extend(['q','w','aaa'])
11 # [55, 1, 'a', 'b', 2, 3, 'a', 'hello', 'q', 'w', 'aaa']
12 # li.extend('a,b,c')
13 # li.extend('abc')
14 # [1, 'a', 'b', 2, 3, 'a', 'a', ',', 'b', ',', 'c', 'a', 'b', 'c']
15 print(li)
列表的增加

 1.5.2、删

 1 li = [1,'a','b',2,3,'a']
 2  按照位置去删除,有返回值,返回值为li[index]
 3 # ret = li.pop(1)
 4 # [1, 'b', 2, 3, 'a'] 移除li[1]
 5 # 按照位置去删除,也可以切片删除 没有返回值
 6 # del li[0]
 7 # 切片时首尾皆删除
 8 # del li[0:2]
 9 # 按照元素去删除,只删除查看到的第一个元素
10 # li.remove('a')
11 # 清空列表
12 # li.clear()
13 print(li)
列表的删除

  1.5.3、改

1 li = [1,'a','b',2,3,'a']
2 #
3 # 按照索引去修改
4 # li [1] = ['haha']
5 # 顾头不顾尾,可切片修改
6 li[0:2] =['1','2']
7 print(li)
列表的修改

 1.5.4 查

 切片去查,或者迭代去查询

 1.5.5 其他操作

 1 # li = [1,'a','b',2,3,'a']
 2 # 统计某一个字符出现的次数
 3 # print(li.count('a'))
 4 # index  用于从列表中找到某个值第一个匹配项的索引位置
 5 # print(li.index('a'))
 6 li = [1,-9,8,10]
 7 li.sort()
 8 # 从大到小 反序
 9 # li.sort(reverse=True)
10 # 按照某一种规则排序,此处为按照绝对值之后排序
11 # li.sort(key=abs)
12 # 翻转
13 li.reverse()
14 print(li)
其他操作

1.6 字典

  字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希值运算。根据计算的结果决定value的存储地址、所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变的数据类型。如:数字、字符串、元祖。

  字典是出列表之外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间最大的区别在于:字典中的元素是通过键来存取的。而不是通过偏移量来存去的。

 1 # dict
 2 # 数据类型划分:  可变数据类型,不可变数据类型
 3 """
 4 不可变数据类型;元祖,bool ,int str  可哈希
 5 可变数据类型; list dict set
 6 dict key 必须是不可变的数据类型  可哈希
 7 value  任意数据类型
 8 dict 优点: 二分查找去查询
 9             存储大量的关系
10         特点:无序的
11  """

  1.6.1、增

1 dic = {'name':'jin','age':18,'sex':'male'}
2 # setDefault 在字典中添加键值对。如果只有键对应的值是None。但是如果原字典中存在设置的键值对。则它不会更改或者覆盖
3 # 由于存在键为name 所以值并不发生改变
4 # dic.setdefault('name','baby')
5 # dic.setdefault('name1','baby')
6 # 直接在后面追加 []为键 后为值
7 dic['tel']=12321321
8 # {'name': 'jin', 'age': 18, 'sex': 'male', 'tel': 12321321}
9 print(dic)
字典的增

  1.6.2、删

 1 dic = {'name':'jin','age':18,'sex':'male'}
 2 # pop 移除键值
 3 # dic.pop('name')
 4 # 与pop的区别在于del没有返回值
 5 # del dic['name']
 6 # 随机删除字典中的某个键值对。将删除的键值对以元祖的方式返回
 7 ret = dic.popitem()
 8 # ('sex', 'male')
 9 # print(ret)
10 # {'name': 'jin', 'age': 18}
11 print(dic)
字典的删

  1.6.3、改

1 dic = {'name':'jin','age':18,'sex':'male'}
2 # 更改name
3 # dic['name']='angle'
4 # print(dic)
5 dic2 = {'name':'haha','age':26}
6 # 讲dic所有的键值对覆盖添加(相同的覆盖。没有的添加)到dic2中
7 dic2.update(dic)
8 # {'name': 'jin', 'age': 18, 'sex': 'male'}
9 print(dic2)
python的改

  1.6.4、查

1 dic = {'name':'jin','age':18,'sex':'male'}
2 # 查找键为name 的值
3 # ret = dic['name']
4 # 同上
5 # ret = dic.get('name')
6 # 没有就返回None
7 ret = dic.get('name1')
8 print(ret)
字典的查

  1.6.5、其他操作

 1 dic = {'name':'jin','age':18,'sex':'male'}
 2 item= dic.items()
 3 # dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
 4 # <class 'dict_items'>
 5 # print(item)
 6 
 7 # keys = dic.keys()
 8 # dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
 9 # print(keys,type(keys))
10 
11 values = dic.values()
12 # dict_values(['jin', 18, 'male']) <class 'dict_values'>
13 print(values,type(values))
字典的其他操作

  1.6.6、字典的迭代

 1 dic = {'name':'jin','age':18,'sex':'male'}
 2 for i in dic:
 3     print(i,dic[i])
 4 """
 5 name jin
 6 age 18
 7 sex male
 8 """
 9 for index,i in enumerate(dic):
10     print(index,i,dic[i])
11 """
12 0 name jin
13 1 age 18
14 2 sex male
15 """
字典的迭代

1.7 集合

  集合是无序的,不重复的数据集合。它里面的元素是可哈希(不可变类型),但是集合本身是不可哈希的(所以集合做不了字典的键)。一下就是集合中最重要的两点:

   ①去重,把一个列表变成集合,就自动去重复了

1 set1 = set(['alex','alex',1,2,3,1,2])
2 # {1, 2, 3, 'alex'}
3 print(set1)

   ②关系测试,测两组数据之间的交集、差集、并集等关系

  

"""
集合: 可变的数据类型,它里面的额元素必须是不可变的数据类型 无序,不重复, 去重复
       {}
       增 删 查 无改的功能 无序
"""

  1.7.1、集合的增删改查

 1 set1={"alex","wusir"}
 2 # add
 3 # set1.add("女神")
 4 # {'女神', 'wusir', 'alex'}
 5 print(set1)
 6 # update
 7 set1.update("abc")
 8 # {'wusir', 'a', 'c', 'alex', 'b'} 将abc迭代存储
 9 print(set1)
10 # 删除
11 set1.pop() # 随机删除
12 print(set1)
13 set1.remove("alex") # 按照元素去删除
14 set1.clear() # 清空集合 空集合 set()
15 del set1 # 删除整个集合
集合的增删改查

  1.7.2、集合的关系操作

  交集

1 set1 = {1,2,3,4,5}
2 set2 = {4,5,6,7,8}
3 print(set1 & set2)  # {4, 5}
4 print(set1.intersection(set2))  # {4, 5}

  并集

1 set1 = {1,2,3,4,5}
2 set2 = {4,5,6,7,8}
3 print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7,8}
4 print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7,8}

  差集

1 set1 = {1,2,3,4,5}
2 set2 = {4,5,6,7,8}
3 print(set1 - set2)  # {1, 2, 3}
4 print(set1.difference(set2))  # {1, 2, 3}

  反交集

1 set1 = {1,2,3,4,5}
2 set2 = {4,5,6,7,8}
3 print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
4 print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}

  子集和超集

1 # 子集和超集
2 set1 = {1,2,3}
3 set2 = {1,2,3,4,5,6}
4 print(set1 < set2)
5 print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
6 print(set2 > set1)
7 print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

1.7.3、frozenset  不可变集合

1 # frozenset不可变集合,让集合变成不可变集合
2 s = frozenset('barry')
3 print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

猜你喜欢

转载自www.cnblogs.com/shine-rainbow/p/9763307.html