首页 > 编程语言 >02-python 数据类型

02-python 数据类型

时间:2024-10-25 14:20:53浏览次数:6  
标签:02 python data 元素 数据类型 元组 print 列表 type

python容器类型数据

str

序列操作

字符串属于序列类型,所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引、下标)访问它们。

s= "hello moluo"

image-20220316174502213

Python 还支持索引值是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值 -1 开始,如图 所示。

image-20220316174543839

索引取值

格式:序列类型数据[下标]

s = "hello moluo"
print(s[6]) # m
print(s[-10]) # e

切片操作

格式:序列类型数据[start : end : step]

s = "hello moluo"
print(s[1:4]) # ell  => 取索引1到索引3(左闭又开)
print(s[:4])  # hell => start缺省,默认从0取
print(s[1:])  # ello moluo  => end缺省,默认取到最后
print(s[1:-1]) # ello molu

print(s[6:9]) # mol
print(s[-4:-1]) # olu
print(s[-1:-4]) # 空
print(s[-1:-4:-1]) #oul  step为1:从左向右一个一个取。为-1 ,从右向左一个取

判断成员是否存在

判断存在:Python 中,可以使用 in 关键字检查某元素是否为序列的成员。

s = "hello moluo"
print("moluo" in s) # True

相加拼接与乘法叠加

支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。

使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果

s = "hello"+" moluo"
print(s) # hello moluo

s= "*"*10
print(s) # **********

解包

a,b = "wb"
print(a) # w
print(b) # b

list

list,列表,在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。

列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,如下所示:

[element1, element2, element3, ..., elementn]

注意:不同于Cjava等语言的数组,python的列表可以存放不同的,任意的数据类型对象。

列表声明

data = []
print(data, type(data))

data = [123,"moluo",True]
print(data,type(data))

序列操作

列表是 Python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。

image-20210413163948909

索引取值

l = [10,11,12,13,14]
print(l[2]) # 12
print(l[-1]) # 14

切片操作

l = [10,11,12,13,14]
print(l[2:5])
print(l[-3:-1])
print(l[:3])
print(l[1:])
print(l[:])
print(l[2:4])
print(l[-3:-1])
print(l[-1:-3])
print(l[-1:-3:-1])
print(l[::2])

说明:

1、取出的元素数量为:结束位置 - 开始位置;

2、取出元素不包含结束位置对应的索引,列表最后一个元素使用 list[len(slice)] 获取;

3、当缺省开始位置时,表示从连续区域开头到结束位置;

4、当缺省结束位置时,表示从开始位置到整个连续区域末尾;

5、两者同时缺省时,与列表本身等效;

6、step为正,从左向右切,为负从右向左切。

判断成员是否存在

in 关键字检查某元素是否为序列的成员

l = [10,11,12,13,14]
print(20 in l) # False
print(12 in l) # True

相加拼接与乘法叠加

l1 = [1,2,3]
l2 = [4,5,6]
print(l1+l2) # [1, 2, 3, 4, 5, 6]

print(l2*3) # [4, 5, 6, 4, 5, 6, 4, 5, 6]

解包

a,b = [1,2]
print(a) # 1
print(b) # 2

tuple

tuple,元组

元组声明

Python的元组与列表类似,不同之处在于元组的元素只能读,不能修改。通常情况下,元组用于保存无需修改的内容。

元组使用小括号表示,声明一个元组:

(element1, element2, element3, ..., elementn)

注意:当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号(,)。否则 Python 解释器会将它视为字符串。

data = (1,2,3)
print(data,type(data)) # (1, 2, 3) <class 'tuple'>


# 当元组声明时,可以省略小括号
data = 1,
print(data, type(data)) # (1,) <class 'tuple'>

data = 1, 2
print(data, type(data)) # (1, 2) <class 'tuple'>

常用操作

和列表一样,元组也是一种序列类型,因此也支持索引取值和切片操作、判断成员是否存在,解包。

l = (1,2,3,4,5)
# 索引取值
print(l[2]) # 3
print(l[-2]) # 4

# 切片操作
print(l[2:4]) # (3, 4)
print(l[:4]) # (1, 2, 3, 4)

# 判断成员是否存在
print(2 in l) # True

# 加法拼接
a = (1,2)
b = (4,5)
print(a+b) # (1, 2, 4, 5)

# 乘法叠加
print(b*3) # (4, 5, 4, 5, 4, 5)

# 解包
x, y = (10, 20)
print(x)  # 10
print(y)  # 20

# 组包
x = 1
y = 2
data = x,y
print(data) # (1, 2)

# 交换2个变量的值
x = 10
y = 20
x,y = y,x
print(x,y) # 20 10

set

Python 中的集合(set),和数学中的集合概念一样。由不同的可hash的不重复的元素组成的集合。

声明集合

Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:

{element1,element2,...}

其中,elementn 表示集合中的元素,个数没有限制。

从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误。

由于集合中的元素是无序的,因此无法向列表那样使用下标访问元素。Python 中,访问集合元素最常用的方法是使用循环结构,将集合中的数据逐一读取出来。

dict

dictionary,字典

声明字典

python使用 { } 创建字典,由于字典中每个元素都包含键(key)和值(value)两部分,因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。

使用{ }创建字典的语法格式如下:

dictname = {'key':'value1', 'key2':'value2', ...}

1、同一字典中的各个键必须唯一,不能重复。

2、低版本中,字典的键值对是无序的,但在3.6版本后字典的键值对默认有序的了,这是新的版本特征。

常用操作

book = {
    "price": 9.9,
    "title": "西游记后传",
    "publish": "人民出版社",
    "authors": ["吴承恩", "小明"]
}

# (1) 查键值
print(book["title"])  # 返回字符串 西游记后传
print(book["authors"])  # 返回列表 ["吴承恩", "小明"]

# (2) 添加或修改键值对,注意:如果键存在,则是修改,否则是添加
book["price"] = 299  # 修改键的值
book["publish"] = "北京商务出版社"  # 添加键值对

# (3) 删除键值对 del 删除命令
print(book)
del book["publish"]
print(book)
del book
print(book)

# (4) 判断键是否存在某字典中
print("price" in book)

变量缓存机制[重要]

image-20220316192422670

在计算机的硬件当中,内存是最重要的配置之一,直接关系到程序的运行速度和流畅度。而python代码的运行,肯定也是放在内存中运行的,所以官方实现了一套变量缓存机制,以达到节省内存的目的。在这个变量缓存机制中,python把一些相同值的变量在内存中指向同一块内存空间,而不再重新开辟一个空间。当然,变量缓存机制,也叫内存驻留机制。

image-20220316192452209

python中使用id()函数查看数据的内存地址。

a = 10
b = 10
print(id(a)) # 140724467271616
print(id(b)) # 140724467271616
# 数值类型(int, float, bool)
1.对于整型而言,-5~正无穷范围内的相同值 id一致
2.对于浮点数而言,正数范围内的相同值 id一致
3.布尔值而言,值相同情况下,id一致
 
# 容器类型(str, list, set, dict, tuple)
5.字符串 和 空元组 相同的情况下,地址相同
6.列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]

小数据池

不同的python文件(模块)中的代码里面的相同数据的本应该是不在同一个内存地址当中的, 而是应该全新的开辟一个新空间,但是这样也会占用了更多的内存,所以python定义了小数据池的概念,默认允许小部分数据即使在不同的文件当中,只要数据相同就可以使用同一个内存空间,以达到节省内存的目的。

小数据池只针对:int、bool、None关键字 ,这些数据类型有效。

is运算符

# 在python中如果要比较两个变量是否同一个值,一般是使用 == 判断。
# 但是,如果在判断的基础上,还要判断两个变量的内存地址是否一样的话,则需要使用is来判断
print(10 == 10.0)
print(id(10) == id(10.0))

数据类型转换

类型自动转换

# data = bool + int
data = True + 2
print(data)


# data = bool + float
data = True + 3.14
print(data)

# data = int + float
data = 3 + 3.5
print(data)

类型强制转换

i = int("3")
print(i,type(i)) # 3 <class 'int'>

s = str(3.14)
print(s,type(s)) # 3.14 <class 'str'>

x = int(True)
print(x, type(x)) # 1 <class 'int'>

y = bool(0)
print(y, type(y)) # False <class 'bool'>

a = float(True)
print(a, type(a)) # 1.0 <class 'float'>

a = float("3.15")
print(a, type(a)) # 3.15 <class 'float'>

# # 以下错误示例:
# a = float("3.15元")
# print(a, type(a)) # ValueError: could not convert string to float: '3.15元'

容器类型数据强制类型转换

# 列表可以通过转换数据类型为集合,可以去除重复的成员
data = [1,3,4, 5, 3, 2, 1]
print(data, type(data))  # [1, 3, 4, 5, 3, 2, 1] <class 'list'>

ret = set(data)
print(ret, type(ret))  # {1, 2, 3, 4, 5} <class 'set'>

data = list(ret)
print(data, type(data)) # [1, 2, 3, 4, 5] <class 'list'>

# 字典转列表,可以直接提取字典的所有key出来
data = {"A":1, "B":2}
ret = list(data)
print(ret) # ['A', 'B']


# 元组可以通过转换数据成列表,修改成员的排列位置
old_data = (1, 2, 3, 4)
data = list(old_data)
data[1], data[2] = data[2], data[1]
new_data = tuple(data)
print(new_data) # (1, 3, 2, 4)

标签:02,python,data,元素,数据类型,元组,print,列表,type
From: https://www.cnblogs.com/chengzixi/p/18502452

相关文章

  • 【重磅】第二届大数据与数据挖掘国际会议(BDDM 2024)新增大会主讲
    第二届大数据与数据挖掘国际会议(BDDM2024)近日有幸邀请到中国人民大学高瓴人工智能学院长聘副教授、博导严睿加入,担任大会主讲嘉宾,欢迎同研究领域的专家学者前来参会交流。严睿,中国人民大学高瓴人工智能学院长聘副教授、博导,获国家优秀青年科学基金资助。博士毕业于北京大学......
  • 2024最新4.2版本社交圈子系统小程序上传审核失败处理方法,全开源社交圈子论坛系统源码
    小程序审核被退回问题处理办法一、新版用户提交小程序审核时被退回原因是源码下载地址:https://gitee.com/dkkyrj/dkquanzi处理办法:请下载此文件覆盖重新打包上传即可,这里把用户修改资料改为了小程序平台不显示填写,H5和app保留。下载后解压覆盖到前端文件/minePag......
  • python ES连接服务器的方法P9
    连接Elasticsearch(ES)服务器是进行数据搜索和分析的常用操作。Elasticsearch是一个基于Lucene的搜索引擎,提供了RESTfulAPI来进行索引、搜索和管理数据。以下是一个详细的Python代码示例,展示如何连接到Elasticsearch服务器并执行一些基本操作。这个示例使用了官方的elasticsearch-......
  • 20222326 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容实验具体内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程通过组合应用各种技术实现恶意代码免杀用另一电脑实测,在杀软开启的情况下,可......
  • 2024年运动场划线机市场发展战略研究报告
    运动场划线机是一种专门用于在体育场地划线的专业设备。这些机器可以用于足球场、篮球场、网球场、田径场等多种体育场所,以确保场地线条清晰、准确,符合比赛规则。2024年10月恒州诚思(YHResearch)调研团队最新发布的《2024年全球及中国运动场划线机行业头部企业市场占有率及排名调研报......
  • 1024程序员征文节
    hello,大家好,我是@#陈orange,明天就是征文节了,这个节日非常重要,如今全球信息技术高速发展,截至今年,全世界大约有2780万名程序员;获奖奖品如下:活动奖品奖项类别   评选规则   奖品   获奖人数10·24特别奖   ★10月22/23/24日任一天发文   10·24专属勋章......
  • 2024年内部知识库软件市场发展战略研究报告-恒州诚思
    内部知识库是一个私有的、内部使用的知识管理平台,它允许企业员工轻松地查找、访问、共享和管理公司内部的各种知识资源。这些资源可能包括公司政策、流程文档、培训材料、项目文档、常见问题解答(FAQs)、最佳实践、工作流程模板、关键人员联系方式、会议记录和议程、软件工具文档等。......
  • 2024-10-23-leetcode每日一题-构成整天的下标对数目 II
    题目描述给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i<j 且 hours[i]+hours[j] 构成 整天 的下标对 i, j 的数目。整天 定义为时间持续时间是24小时的 整数倍 。例如,1天是24小时,2天是48小时,3天是72小时,以此类推。......
  • 2024年最新婚恋交友系统源码,闪亮登场!支持微信小程序+微信公众号+H5+APP
    在快节奏的现代生活里,大家忙得像陀螺,一不小心就把感情生活晾在了一边。找另一半?既让人期待,又让人头疼。这时候,红娘婚恋相亲交友系统闪亮登场,成了婚恋市场上的“暖宝宝”。一、介绍系统基于TP6+Uni-app框架开发;客户移动端采用uni-app开发,管理后台TH6开发。系统支持微信公......
  • Node.js和Python在服务器端编程上有什么不同
    Node.js和Python在服务器端编程上有以下不同:1.设计哲学不同;2.性能不同;3.库支持和框架不同;4.同步/异步处理不同;5.语法简洁性不同;6.用途和适用场景不同。具体来说,Node.js基于事件驱动和非阻塞I/O模型,优于高并发处理,而Python则以简洁易读著称,广泛应用于科学计算、人工智能等领域。......