我们编写的Python代码,无论是简单还是复杂的,往往都绕不开数据类型这一知识点,因此数据类型是学习Python这门语言过程中必须掌握的一部分。下面,我将为大家整理出Python的所有数据类型及其常见用法。
首先,数据类型分为可变类型和不可变类型。可变类型包括:列表、字典、集合,不可变类型包括:数字、字符串、元组。下面我将对除数字以外的其他五个类型展开细讲。
1.字符串
用于存储和表示基本的文本信息,我们平时会用他来表示文本信息,例如:名字、地址、自我介绍,在单引号、双引号、三引号内包含的内容称之为字符串(三引号从功能上讲就是注释,作为文档字符串)。下面是它的常用方法:
1.1 find()
范围性寻找子串,返回索引值,没有就返回-1。语法为:
str.find(str1,beg,end)
-
str——》指定检索的字符串
-
beg——》开始索引的索引值,默认值是0
-
end——》结束索引的索引值,默认为字符串的长度
find()方法常用于 检测字符串中是否包含子字符串str,且find()只能找一个子串的下标,默认是从 下标0开始找到最后。
1.2 index()
检测字符串中是否包含字符串str,如果指定beg(开始)和end(结束)范围,则检测是否包含在指 定的范围内,这个方法与find()方法一样,只不过如果str不在string中会报异常。
s = "hello,world,python,php"
print(s.index("world"))
print(s.index("worldd"))
1.3 count()
返回找到的字符串个数,不过多细讲。
s = "hello,world,python,php"
print(s.count("h"))
s字符串中“h”的个数为6,因此运行结果为6。
1.4 strip()
去除字符串两边的空格、换行符、制表符,得到是一个新的字符串。
code = input("请输入4位数的验证码:")
data = code.strip()
if data == "ABCD":
print("验证码正确")
else:
print("验证码错误")
1.5 startwith()、endwith()
判断字符串是否以xx开头/结尾,得到的是一个布尔值(True/False)。
zhuzhi = input("请输入住址:")
if zhuzhi.startswith("北京市"):
print("北京人口")
else:
print("非北京人口")
zhuzhi = input("请输入住址:")
if zhuzhi.endswith("村"):
print("农业户口")
else:
print("非农业")
1.6 isdigit()
判断字符串是否是数字组成,得到的是一个布尔值。
v1 = input("请输入一个数:")
if v1.isdigit():
print(v1)
else:
print("请输入正确的数字")
1.7 upper()、lower()
使字符串的英文变大写/小写,得到的是一个新的字符串。
s = "BuiSd908 asdJSi"
s1 = s.lower()
print(s1)
s2 = s1.upper()
print(s2)
1.8 split()
切分字符串,将字符串类型转列表,默认以空格切分,也可以指定字符切分。
s = "my name is xiaochuan"
print(s.split())
s1 = "python,php,c,java"
print(s1.split(","))
1.9 replace()
字符串内容的替换,得到一个新的字符串。
content = input("请输入评论信息:")
content1 = content.replace("卧槽","**")
print(content1)
1.10 join()
-
用于将序列中的元素以指定字符串连接生成一个新的字符串
-
常用于将列表类型转换为字符串
li = ['a','b','c']
s =' '.join(li)
print(s)
2.列表
列表是一个有序且可变的容器,以中括号[ ] 为标志,可以存放多个不同类型的元素,一般用于存储同一个类别数据,方便操作。下面我们来讲讲列表的增删改查。
2.1 增
包括以下三种方法:
2.1.1 append()
添加一个数据,添加在列表的最后一位。
li = ['语文','数学','英语']
li.append("体育")
print(li)
2.1.2 insert()
添加一个数据,添加到指定的位置。语法为:
列表名.insert(下标的位置,内容)
li.insert(3,'美术')
2.1.3 extend()
添加一个序列类型,到最后一位,并且把序列类型拆分。
li.extend('政史')
2.2 删
主要包括以下四个方法:
2.2.1 pop()
删除一个值,默认从最后一个开始删,也可以指定位置 。语法为:
列表名.pop(下标)
li=['语文','数学','英语']
li.pop(0)
print(li)
2.2.2 remove()
删除一个指定的值,如果有多个,就删除第一个。
li=[1,2,2,3]
li.remove(2)
print(li)
2.2.3 clear()
清空列表的所有数据。
li=[1,2,2,3]
li.clear()
print(li)
2.2.4 del
全局删除,可以删除一个变量 。语法为:
del 列表名[下标]
li=[1,2,2,3]
del li[1]
print(li)
2.3 改
由于列表是可变类型,因此我们可以直接通过重新赋值的方式更改列表内的元素。列表元素的更改可分为单个修改和多个修改。
2.3.1 单个修改
直接通过下标进行修改,语法是:列表名[下标]= 内容。
li = ['语文','数学','英语']
li[1] = '体育'
print(li)
2.3.2 多个修改
通过切片的方式进行修改,语法是:列表名[起点:终点] = 数据1,数据2,数据......
li = ['语文','数学','英语']
li[0:3] = '体育','美术','音乐'
print(li)
2.4 查
包括以下两个方法:
2.4.1 index()
根据内容获取指定数据的下标,返回一个索引值,没有就会报错,语法为:
列表名.index(要找的内容,起点值)
其中,起点值可不写。
li = [1,2,4,5,123,87,4,8,22]
a = li.index(4)
print(a)
li中第一个4位于第3个元素,索引值为2,因此输出为2。
2.4.2 count()
统计元素出现的次数,语法为:列表名.count(元素内容)
li = [1,2,8,2,4,5,7,2]
a = li.count(2)
print(a)
li中共有3个2,因此输出为3。
2.5 其他
除增删改查之外,sort()也是比较常用的一个方法,它的作用是:让列表的内容按照降序/升序的方式来排序,前提是列表内的元素都为数字类型。语法:
- 列表名.sort() ——》升序
- 列表名sort(reverse=True)——》降序
li = [1,-2,4,5,123,87,4,8,22.22]
li.sort()
print(li)
3.元组
注意以下几点:
1.使用一对小括号将所有的元素包围起来,但是小括号不是必须的,只要将各个元素用逗号隔开,python就会将其视为元组。
t = 'python','java'
print(type(t))
2.元组和列表都可以存储一系列的变量,由于列表会预留内存空间,所以可以增加元素,而元组会按需分配内存,所以如果变量数量固定,建议使用元组,因为占用空间更小。
3.元组本身不可变,如果元组中还包含其他的可变元素,这些可变元素就可以改变。
4.元组为不可变类型,只有查询方法count和index,使用方法与列表一致。
4.字典
用来保存一些典型的“对应关系”的数据类型,特点是用键值对的方式来存储数据(键值对——key:value )。语法格式:
dict={key1:value1,key2:value2,......}
它的性质包括:
- 无序性。字典是无序的,没有下标,是直接通过键值对的方式存储数据的。
- 不重复性。字典的键(key)是不可以重复的。
dict1 = {'a':1,'b':2,'a':3,'a':4}
print(dict1) # 默认取最后一个键
- 可变性。字典里面的数据是可变的 。从上面不重复性的例子中可以看出。
当我们想要表示一组固定信息时,用字典可以更加直观。
4.1 字典的增删改查
下面我们先来讲讲字典的增删改查。(不使用方法)
4.1.1 增
通过对key赋值添加key-value对。语法为:dict[key] = value.
scores = {'语文':89}
scores['数学'] = 93
print(scores)
4.1.2 删
可使用del语句通过key删除key-value对,语法为:del dict[key].
scores = {'语文': 89, '数学': 93}
del scores['数学']
print(scores)
4.1.3 改
可通过给key重新赋值的方式更改key所对应的value.
cars = {'BMW':8.5,'benchi':89,'tesila':7.9}
cars['benchi'] = 4.3
cars['tesila'] = 3.8
print(cars)
4.1.4 查
可直接通过key访问所对应的value
scores = {'语文':89}
print(scores['语文'])
4.2 字典的常用方法
讲完增删改查,我们再来讲讲字典的常用方法:
4.2.1 clear()
用于清空字典中所有的key-value对,对一个字典执行clear()之后,字典就会变成空字典
cars = {'BMW':8.5,'benchi':89,'tesila':7.9}
cars.clear()
print(cars)
4.2.2 get()
根据key来获取value ,与上面所讲的“查”不同的是,若字典中不存在这个key,则后者会直接报错,而前者返回的则是None。
cars = {'BMW':8.5,'benchi':89,'tesila':7.9}
print(cars.get('BMW'))
print(cars.get('baoshijie'))
print(cars['baoshijie'])
4.2.3 items()、keys()、values()
- items():获取字典中所有的键值对,返回一个dict_items对象
- keys()、values():获取字典中所有的key/values,返回一个dict_keys/dict_values对象
cars = {'BMW':8.5,'benchi':89,'tesila':7.9}
print(cars.items())
print(cars.keys())
print(cars.values())
4.2.4 pop()
用于获取指定的key对应的value,并且删除这个key-value对 。
cars = {'BMW':8.5,'benchi':89,'tesila':7.9}
print(cars.pop('tesila')) # 输出的是要删除的key对象所对应的value
print(cars)
4.2.5 setdefault()
根据key获取对应的值,额外功能就是当程序要获取的key在字典中不存在时,这个方法会先为这个不存在的key设置一个默认的value,然后再返回这个key对应的value;若key已存在,则不修改原来对应的value。语法为:
dict_name.setdefault(key,value)
- key:要获取的key
- value:当key不存在时给它设置的对应的value
cars = {'BMW':8.5,'benchi':89,'tesila':7.9}
print(cars.setdefault('tesila',3.1)) # 如果key在字典中存在,不会修改字典的内容
print(cars)
print(cars.setdefault('baoshijie',9.2)) # 如果key在字典中不存在,则增加这对键值对
print(cars)
5.集合
- 用来保存不重复的元素,集合中的元素都是唯一且无序的,互不相同的,放在一对{}中,格式为:{name1,name2....namen},
- 集合只能存储不可变的数据类型,如果存储了可变的数据类型就会报错。
- 为了与字典区分,我们要用set()表示空集合(空字典为{})。
- 我们常用集合的唯一性给其他数据类型去重:
li = [1,1,2,2,3,4,4,4,4,4]
a = set(li) # 先转化为集合去重
new_li = list(a) # 再转化为一个新列表
print(new_li)
- 同数学中的集合一样,Python中的集合也有数学运算:
运算符操作 | python运算符 | 含义 |
---|---|---|
交集 | & | 取两集合公共的元素 |
并集 | | | 取两集合全部的元素 |
差集 | - | 取一个集合中另一集合没有的元素 |
成员运算 | in 和 not in | 判断一个某个元素是否在或者不在集合中 |
集合1 & 集合2 ——》判断交集
集合1 | 集合2 ——》判断并集
集合1 - 集合2 ——》判断差集交集:两个集合里面共同有的数据
并集:两个集合里面的全部数据(不包括重复的数据,集合本身也不能重复)
差集:集合1-集合2 减去共有的,剩下就是差集[去掉交集之后的就是差集]
#交集
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2){3}
#并集
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 | set2){1, 2, 3, 4, 5}
# 差集
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 - set2){1, 2}
# in 和 not in
set1 = {1,2,3}
set2 = {3,4,5}
print(3 in set2)
print(6 not in set2)True
True
- 由于集合的无序性和不可变性,集合没有“改”和“查”的方法,所以我们再来讲讲它的“增”和“删”
5.1 增
5.1.1 add()
参数为要添加的对象,添加后的元素位置不确定。
s = {'语文','数学','英语'}
s.add('体育')
print(s)
5.1.2 update()
参数为要添加的对象,会将对象中每一个元素拆分后随机添加到序列中
s = {'语文','数学','英语'}
s.update('政史')
print(s)
5.2 删
5.2.1 pop()
没有参数,随机删除一个元素
s = {'语文','数学','英语'}
s.pop()
print(s)
5.2.2 remove()
有参数,参数为要删除的元素,如果元素不存在就报错
s = {'语文','数学','英语'}
s.remove('语文')
print(s)
5.2.3 discard()
有参数,如果元素不存在也不会报错
s = {'语文','数学','英语'}
s.discard('体育')
print(s)
5.2.4 del
删除整个集合
s = {'语文','数学','英语'}
del s
print(s)
以上就是Python数据类型的大致内容了,希望能够帮到你!!!
PS:这是本人写的第一篇文章,因为觉得Python的数据类型特别重要,所以就挑了这一部分来写。同时,由于缺少经验,如果有哪里写得不好或是不对,欢迎各位指正。