Python数据类型详解

我们编写的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的数据类型特别重要,所以就挑了这一部分来写。同时,由于缺少经验,如果有哪里写得不好或是不对,欢迎各位指正。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值