Python中常见的数据类型

news/2024/9/23 14:35:57/

Python基本数据类型一般分为:数字字符串列表元组字典集合(可变集合和不可变集合)这六种基本数据类型,

其中 数字、字符串、元祖和可变集合为不可变类型,列表、字典和不可变集合为可变类型。

下面我们来详细的介绍一下他们:

数字:

数字类型是不可更改的对象。对变量改变数字值就是生成/创建新的对象。Python支持多种数字类型:

整型(标准整型和长整型(Python2.7及之前的有这种类型))、布尔型、双精度浮点型、十进制浮点型、复数。

标准整型

int,标准整型,在大多数32位机器上标准整型取值范围是-231到231-1,也就是-2147483648~2147483647,如果在64位机器使用64位编译器,那么这个系统的标准整型将是64位。

布尔型

bool,从Python2.3开始Python中添加了布尔类型。布尔类型有两种True和False。对于没有__nozero__方法的对象默认是True。

对于值为0的数字、空集(空列表、空元组、空字典等)在Python中的布尔类型中都是False。

>>> bool(1)
True
>>> bool('a')
True
>>> bool(0)
False
>>> bool('')
False

浮点型

​ float,每个浮点型占8个字节(64位),完全遵守IEEE754号规范(52M/11E/1S),其中52个位用于表示底,11个位用于表示指数(可表示的范围大约是±10**308.25),剩下的一个位表示符号。这看上去相当完美,然而,实际精度依赖于机器架构和创建Python解释器的编译器。

​ 浮点型值通常都有一个小数点和一个可选的后缀e(大写或小写,表示科学计数法)。在e和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)。更多内容,请点击python学习网。

以上是Python核心编程的对浮点型(双精度浮点型)的说明。经过Python实测浮点型默认长度是24字节如果超出这个范围会自动

复数类型

complex,在复数中虚数不能单独存在,它们总是和一个值为0.0的实数部分一起来构成一个复数。复数由实数部分和虚数部分构成。

表示虚数的语法:real+imagj。

实数部分和虚数部分都是浮点型。

虚数部分必须有后缀j或J。

字符串:

字符串(string)是***不可变类型***,就是说改变一个字符串的元素需要新建一个新的字符串。字符串是由独立的字符组成的,并且这些字符可以通过切片操作顺序地访问。里面通过在引号间包含字符的方式创建字符串,单引号和双引号的作用是相同的。

​ Python用“原始字符串”操作符来创建直接量字符串,所以再做区分就没什么意义了。其他的语言,比如C语言里面用单引号来标示字符,双引号标示字符串,而在Python里面没有字符这个类型。这可能是双引号和单引号在Python里面被视作一样的另一个原因。

​ Python实际上有三类字符串。通常意义的字符串(str) 和Unicode字符串(unicode) 实际上都是抽象类basestring的子类。这个basestring是不能实例化的。

字符串常见的操作方法:

操作方法作用案例
index()查找字符串中第一次出现的子字符串的位置;可以规定字符串的索引查找范围[star,end)。若无则会报错my_str="hello word hello python"
ret_01=my_str.index(“lo”,5,17)
print(ret_01)
find()找字符串中指定的子字符串第一次出现的位置(find默认从左侧开始查找,rfind从右侧开始查找),可以规定字符串的索引查找范围。若无则返回 -1str.find(sub,start,end) -> int 返回整数
- sub —要索引的子字符串。
- start —索引的起始位置。默认值为0。
- end —索引的结束位置。默认值为字符串长度len(str)。
count()查找指定字符在字符串中出现的次数my_str="hello word hello python"
ret_06=my_str.count(“lo”)
print(ret_06)
replace()替换字符串中指定字符replace(“被替换的字符”,“替换成的字符”,替换次数) 替换次数不写默认全部替换
split()拆分字符串。 通过指定分隔符sep对字符串进行分割,并保存分割后的字符串列表。my_str=“hello word hello python"
ret_03=my_str.split(” ")
print(ret_03)
capitalize()将字符串的第一个字母变成大写,其余字母变为小写。my_str="hello word hello python"
ret_04=my_str.capitalize()
print(ret_04)
title()返回一个满足标题格式的字符串。即所有英文单词首字母大写,其余英文字母小写my_str="hello word hello python"
ret_05=my_str.title()
print(ret_05)
startswith()判断字符串是否以指定字符或子字符串开头str.endswith(“suffix”, start, end) 或str[start,end].
注意:空字符的情况。返回值通常为True
endswith()用于判断字符串中某段字符串是否以指定字符或子字符串结尾。str.endswith(“suffix”)
isalnum()检测字符串是否由字母和数字组成。str中至少有一个字符且所有字符都是字母或数字则返回 True,否则返回 Falsestr.isalnum() -> bool 返回值为布尔类型(True,False)
isalpha()检测字符串是否只由字母组成。字符串中至少有一个字符且
所有字符都是字母则返回 True,否则返回 False。
str.isalpha() -> bool 返回值为布尔类型(True,False)
isdigit()检测字符串是否只由数字组成.字符串中至少有一个字符且所有字符都是数字则返回 True,否则返回 Falsestr.isdigit() -> bool 返回值为布尔类型(True,False)
注:能判断“①”,不能判断中文数字。但 isnumeric() 函数可以。
islower()检测字符串中的字母是否全由小写字母组成。(字符串中可包含非字母字符)字符串中包含至少一个区分大小写的字符,且所有这些区分大小写的字符都是小写,则返回 True,否则返回 False。str.islower() -> bool 返回值为布尔类型(True,False)
isupper()检测字符串中的字母是否全由大写字母组成。(字符串中可包含非字母字符)。字符串中包含至少一个区分大小写的字符,且所有这些区分大小写的字符都是大写,则返回 True,否则返回 False。str.isupper() -> bool 返回值为布尔类型(True,False)
strip() lstrip() rstrip()该函数的作用是去除字符串开头和结尾处指定的字符,不会去除字符串中间对应的字符
lstrip() 方法用于截掉字符串左边的空格或指定字符。
删除 str 字符串末尾的指定字符(默认为空格
str.strip(chars)
参数:chars – 要去除的字符 默认为空格或换行符
join()将iterable变量的每一个元素后增加一个str字符串sep.join(iterable)
sep——分隔符。可以为空。
iterable(可迭代对象)—— 要连接的变量 ,可以是 字符串,元组,字典,列表等。
upper()将字符串中所有小写字母转换成大写字母my_str="hello word hello python"
ret_06=my_str.upper()
print(ret_06)
center()返回一个长度为width,两边用fillchar(单字符)填充的字符串,即字符串str居中,两边用fillchar填充。若字符串的长度大于width,则直接返回字符串strwidth —— 指定字符串的输出长度。
fillchar—— 将要填充的单字符,默认为空格
just() ljust() rjust()返回一个原字符串左对齐(默认),并使用fillchar填充(默认为空格)至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。ljust()左对齐,rjust()右对齐
issapce()检测字符串是否只由空格组成。若字符串中只包含空格,则返回 True,否则返回 Falsestr.isspace() -> bool 返回值为布尔类型(True,False)
istitle()检测判断字符串中所有单词的首字母是否为大写,且其它字母是否为小写,字符串中可以存在其它非字母的字符。若字符串中所有单词的首字母为大写,且其它字母为小写,则返回 True,否则返回 False.str.istitle() -> bool 返回值为布尔类型(True,False)

注意

  • find和index都可以查找指定字符字符串的下标,不同点为find查找的字符不存在时输出-1,而index直接报错

列表:

认识列表:

names = [“Alise”, 123, None, [1, 2, 3], {“name”: “张珊”}, 999, 110]

我们将由中括号包裹的代码块称作列表,为了方便对裂变进行操作,我们将列表赋值给了变量names。注意,在特定情况下,变量需要先声明。变量中的每一个数据称作元素,元素可以为任意类型。

列表的常见操作:

操作方法作用案例
append()用于在列表末尾追加新的对象a = [1, 2, 3]
a.append(4)

result: [1, 2, 3, 4]
insert()方法用于将对象插入到列表中a = [1, 2, 3]
a.insert(0, ‘aa’)

result: [‘aa’, 1, 2,3]
extend()方法可以在列表的末尾一次性追加另一个序列中的多个值a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)

result: [1, 2, 3, 4, 5, 6]
count()方法统计某个元素在列表中出现的次数a = [‘aa’, ‘bb’, ‘cc’, ‘aa’, ‘aa’]
print(a.count(‘aa’))

result: 3
index()函数用于从列表中找出某个值第一个匹配项的索引位置a = [1, 2, 3, 1]
print(a.index(1))

result: 0
in or not in返回bool类型的结果 True 或者 Falselist = [‘aa’, ‘bb’, ‘cc’, ‘aa’, ‘aa’]
print(“a” in list)
# True
pop()方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值a = [1, 2, 3]
a.pop()
result: [1, 2]
a.pop(0)
result: [2]
remove()方法用于移除列表中某一个值的第一个匹配项a = [‘aa’, ‘bb’, ‘cc’, ‘aa’]
a.remove(‘aa’)

result: [‘bb’, ‘cc’, ‘aa’]
clear()清除列表中所有的元素list= [“aa”, “bb”, “cc”, “dd”, “ee”, “ff”]
list.clear()
print(list)
# 运行结果:[ ]
del()删除整个列表list= [“aa”, “bb”, “cc”, “dd”, “ee”, “ff”]
del list
print(list) # 报错 name ‘list’ is not defined
reverse()方法将列表中的元素反向存放a = [‘a’, ‘b’, ‘c’]
a.reverse()

result: [‘c’, ‘b’, ‘a’]
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中li = [11, 22, 33]
for k,v in enumerate(li, 1):
print(k, v)
len()返回一个列表的长度names = [“Alise”, 123, None, [1, 2, 3], {“name”: “张珊”}, 999, 110]
print(len(names))
# 7
sort()和sorted()方法用于在原位置对列表进行排序,意外着改变原来的列表,让其中的元素按一定顺序排列# 对字母进行排序:
nums = [“a”, “b”, “c”, “e”, “z”, “x”]
nums.sort(reverse=True)
print(nums) # [‘z’, ‘x’, ‘e’, ‘c’, ‘b’, ‘a’]
# [‘z’, ‘x’, ‘e’, ‘c’, ‘b’, ‘a’]

# 对数字进行排序:
nums = [3, 9, 15, 51, 75, 6, 1, 4, 45]
nums.sort(reverse=True)
print(nums) # [75, 51, 45, 15, 9, 6, 4, 3, 1]

列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层

[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
# 他的执行顺序是:
for x in range(1,5)if x > 2for y in range(1,4)if y < 3x*y

注意

  • sort只可对列表进行操作,而sorted可对所有可迭代对象使用,且sortsorted 都有两个参数 ,第一个参数:key=None默认为空,可以是自定义函数,系统函数,或者lambda匿名函数 ,第二个参数是reverse=Fals 默认为False表示不反转,即从小到大的顺序

元祖:

元组的定义由()定义,相邻元素之间采用,进行分割,在形式上,可以称为不可变的列表

元组是不可变类型,无法对其中的元素进行单独的修改和增加

元祖的常见操作

操作方法作用案例
del元组的删除(由于元祖不可变,所以这里是删除整个元祖)tu1 = (‘123’, ‘元组’, [1, 2, 3], {‘name’: ‘zhou’, ‘age’: 18}) del tu1
count查找的为某个元素在元组中出现的次数tu = (11, 22, 33, 44, 55, 44, 33, 22, 11)
print(tu.count(22))

# 输出结果 2
index查找的为元素的索引值,第一个参数代表需要查找的元素,第二个参数可以指定从哪个索引值开始查找tu = (11, 22, 33, 44, 55, 44, 33, 22, 11)
print(tu.index(44))
print(tu.index(44, 4))

# 输出结果
3
5
通过索引取值通过切片的方式获取指定的元素,第一个参数为开始索引,第二个参数为结束索引,第三个参数为步长tu = (11, 22, 33, 44, 55, 44, 33, 22, 11)
# 通过索引取出索引为3的值
print(tu[3])
print(tu[2:8:2])

# 输出结果
44

修改元组元素

虽然我们开始就说到元组无法进行单独的修改,但是我们可以对原组进行重新赋值,拼接等操作达到修改元组

tu = (11, 22, 33, 44, 55, 44, 33, 22, 11)
# 给元组重新赋值
tu = (77, 88, 99)
print(tu)# 使用元组进行拼接得到新元祖,注意,拼接的类型一定要为元组格式
tu1 = (33, 44, 55)
tu2 = (66, 77, 88)
tu1 = tu1 + tu2
print(tu1)# 输出结果
(77, 88, 99)
(33, 44, 55, 66, 77, 88)

元组的拆包

在元组有多个元素的时候,我们可以进行元组拆包来分别得到元组的元素

tu = (77, 88, 99)
# 有几个元素就用几个变量接收
a, b, c = tu
print(a)
print(b)
print(c)# 输出结果
77
88
99

元组推导式

元组推导式和我们的列表推导式是一样的,只需要修将列表的[]改为()就可以了,此处我们不做过多的演示,详细内容请看列表(list)的常用操作

字典:

字典的定义:

字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

 d = {key1 : value1, key2 : value2 }

字典的常见操作:

操作方法格式
查看元素print(字典名[key值]) #获取不存在的key会发生异常 print(字典名.get(key值)) #获取到不存在的key不会发生异常
修改元素字典名[key值] 赋予新的值即可
dict[key] = “runtu”
添加元素字典名[key值] = “qiuqiu” #key值不存在
dict[key] = “qiuqiu”
删除元素del 字典[key值]
del dict[key]
删除字典del 字典名
del dict
清空字典字典名.clear
dict.clear
测量键值对的长度或个数len(字典名)
len(dict)
返回一个字典的所以key的列表print(字典名.keys)
print(dict.keys)
返回一个包含字典所有value的列表print(字典名.values)
print(dict.values)
返回一个包含所有(键,值)元组的列表print(字典名.items())
print(dict.items())
.has_key查看key值是否在字典内,返回True(存在),返回False(不存在)字典名.has_key(key值)
dict.has_key(key)

字典的特性:

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

  1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

    dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print "dict['Name']: ", dict['Name']# 输出结果:
    dict['Name']:  Manni
    
  2. 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:

    dict = {['Name']: 'Zara', 'Age': 7} 
    print(dict)
    #输出结果(报错信息):
    dict = {['Name']: 'Zara', 'Age': 7}
    Traceback (most recent call last):File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'
    

Python字典包含了以下内置函数:

序号函数描述
1cmp(dict1, dict2)比较两个字典元素。
2len(dict)计算字典元素个数,即键的总数。
3str(dict)输出字典可打印的字符串表示。
4type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。

Python字典包含了以下内置方法:

序号函数描述
1dict.clear()删除字典内所有元素
2dict.copy()返回一个字典的浅复制
3dict.fromkeys(seq[, val])创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
4dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值
5dict.has_key(key)如果键在字典dict里返回true,否则返回false
6dict.items()以列表返回可遍历的(键, 值) 元组数组
7dict.keys()以列表返回一个字典所有的键
8dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9dict.update(dict2)把字典dict2的键/值对更新到dict里
10dict.values()以列表返回字典中的所有值
11pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12popitem()返回并删除字典中的最后一对键和值。

集合:

集合的定义:

集合(set)是一个无序的不重复元素序列

可以使用大括号 { } 或者 set( ) 函数创建集合

创建一个空集合必须用 set( ) 而不是 { },因为 { } 是用来创建一个空字典

集合的常见操作:

add增加元素a_set = {1, 2, 3, 4, 5}
a_set.add(6)
a_set.add(“a”)
print(a_set)
{1, 2, 3, 4, 5, 6, ‘a’}
update把要传入的元素拆分,作为个体传入到集合中a_set = {1, 2, 3, 4, 5}
b_set = {6, 7, 8, 9}
a_set.update(b_set)
print(a_set)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
remove删除集合中的元素 如果有,直接删除 如果没有 程序报错c_set = {1, 2, 3, 4, 5, 6, 7, 8, 9}
c_set.remove(8)
print(c_set)
{1, 2, 3, 4, 5, 6, 7, 9}
pop随机删除集合中的元素,如果set1没有元素程序报错c_set = {1, 2, 3, 4, 5, 6, 7, 8, 9}
c_set.pop()
print(c_set)
#{2, 3, 4, 5, 6, 7, 8, 9}
discard如果元素存在 直接删除 如 果元素不存在 不做任何操作c_set = {1, 2, 3, 4, 5, 6, 7, 8, 9}
c_set.discard(5)
print(c_set)
#{1, 2, 3, 4, 6, 7, 8, 9}

集合的交集和并集:

方法代码
交集set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 & set2
print(new_set)
并集set1 = {1, 2, 3, 4}

set2 = {3, 4, 5, 6}
new_set = set1 | set2
print(new_set)

Python 集合的优势:

由于集合中的元素不能出现多次,这使得集合在很大程度上能够高效地从列表或元组中删除重复值,并执行取并集、交集等常见的的数学操作

注意:

集合分为可变集合不可变集合

不可变集的一个主要的缺点是:由于它们是不可变的,这意味着你不能向其中添加元素或者删除其中的元素


http://www.ppmy.cn/news/390132.html

相关文章

以前一款半回合制java游戏_我以前玩过一款回合制游戏,很久以前的事了但是忘记叫什么名字了? 爱问知识人...

仙剑系列 仙1是我第一个玩的游戏&#xff0c;感觉很粗糙&#xff0c;不过很经典。 直到玩了第2个游戏&#xff0c;仙3&#xff0c;3D的画面让我第一次感受了到单机游戏的丰富多采&#xff0c;让我开始步入单机游戏的的殿堂。仙3外还是我继幻想三国志2后&#xff0c;第二次流下泪…

宫廷心计服务器修复,3月25日停服版本更新公告

亲爱的玩家&#xff1a; 为了丰富游戏玩法&#xff0c;改善各位玩家的游戏体验&#xff0c;《宫廷计手游》将于3月25日04:00-09:00进行全服停服版本更新&#xff0c;更新过程中将无法登入游戏。 版本更新后安卓平台需要重新下载游戏&#xff0c;请玩家提前下载最新版本。 【更新…

新天骄服务器爆率修改,天骄网游技能修改详解

关于技能修改,好多人已经知道怎么回事了 我不知道别人是怎么修改的,我来说一下我的方法 解密objmdl下的MethodMdl.ini文件 这个文件里放的是技能效果 我们要做自己的技能就要从它入手 下面我们把游侠的 斩棘披荆 改成术士的 长空冰暴 先来看看 斩棘披荆 的技能描述 wType=4 ——…

Docker部署前后端分离项目

云主机 centos7 中Docker容器式部署前后端分离项目DjangoVue.js 前期准备&#xff1a; Docker安装Docker - CentOS Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里&#xff0c;安装命令如下 yum -y install docker本地安装软件FileZilla Client&#xff0c;并…

秦殇 二进制txt 异或(h2.exe相关)

最近研究点秦殇的东西 去秦殇吧看到前人研究出了h2.exe 就写个python批量修改txt 到out目录 #!/usr/bin/env python import osdef filecovert(file_path, out_dir):b bytearray(open(file_path, rb).read())isSec 1if len(b) > 0:if b[0] 128 :del b[0]isSec 0for i i…

秦殇千年轮回java游戏下载,智云稳定器如何拍旋转画面 使用稳定器拍摄画面方法...

有的朋友在买了稳定器之后&#xff0c;拍摄的时候发现画面还是不够稳定&#xff0c;然后就怀疑稳定器是不是有问题。其实不是&#xff0c;稳定器是能很好的解决移动拍摄中的抖动问题&#xff0c;但是在拍摄过程中&#xff0c;我们还是要注意一些*基本的问题。在这里带来使用智云…

读书笔记 - 《秦殇》

这本书和明朝那些事相比还是有一定差距&#xff0c;但写法有相似之处&#xff0c;也可以一读。书从秦始皇驾崩前开始&#xff0c;写到项羽分封诸侯&#xff0c;把这段历史做了一个戏说。历史总是有很多东西可以借鉴。秦朝严酷推行法家的方式&#xff0c;导致社会阶层瓦解&#…