Python学习笔记 数据类型

2023-11-16

要学习一门语言,首先要看看它的数据类型。由于Python是一门动态语言,所以Python的变量在声明时不需要类型,只要写出名称即可。这里所用的Python版本是目前最新的Python 3.6.1。

数字类型

整数

在Python中只有一种整数类型,类似Java的BigInteger,可以扩展到无限大位。整数字面量可以是十进制、二进制、八进制或十六进制的。数字在输出的时候会以十进制输出,如果希望以其他形式输出,可以使用oct、hex、bin等几个内置函数转换。

在Python中运算符和其他语言类似。比较特殊的是除法,默认的/是小数除,而其他语言中的整除是//。乘方则是**。下面用一点例子来说明。

print('--------------整数类型--------------')
print(f'Integer type:{type(100)}')
print(f'Integer value:{100}')

# 各种进制
decimal = 100
binary_number = 0b1100
octal_number = 0o12374
hexadecimal = 0xcafe

print(f'八进制:{oct(decimal)}')
print(f'十六进制:{hex(decimal)}')
print(f'二进制:{bin(decimal)}')

# 特别的运算符
result = 5 / 3
print(f'/ 是小数除:{result}')
result = 5 // 3
print(f'// 是整除:{result}')
result = 5 ** 3
print(f'**是乘方:{result}')

浮点数

Python中的浮点数,就是遵循IEEE 754的双精度浮点数。浮点数也支持科学计数法。这里没什么说的。

print('--------------浮点数类型--------------')
print(f'Float type:{type(3.14)}')
print(f'Float value:{3.14}')

# 各种小数
float_number = 3.1415
exp_number = 0.31415e1
print(f'float:{exp_number}')

复数

Python还有一个特点,那就是内置了复数的支持。复数字面量使用a+bj来表示。复数的实部和虚部分别用real和imag来取得。

print('--------------复数类型--------------')
complex1 = 1 + 2j
complex2 = 2 + 3j
print('复数类型:', type(complex1))
print('复数:', complex1 + complex2)
print('复数{0}的实部:{1},虚部是:{2}'.format(complex1, complex1.real, complex1.imag))
print('{0}的共轭复数是:{1}'.format(complex1, complex1.conjugate()))

布尔类型

Python支持布尔类型,真值和假值分别是TrueFalse

print('--------------布尔类型--------------')

print(f'Bool type:{type(True)}')
print(f'Bool value:{False}')

空类型

Python的空类型类似Java中的void或null。

print('--------------空类型--------------')
print(f'None type:{type(None)}')
print(f'None value:{None}')

字符串

Python字符串可以使用单引号'或双引号"来包括。它们之间没有任何区别。当使用一种引号的时候,字符串内部的另一种引号不需要转义。所以如果字符串内部要包含单引号,那么我们使用双引号包括更好。需要注意,Python字符串是不可变的

多行字符串使用三个连续的引号来表示。为了美观,多行字符串的第一行往往另起一行,不过这样的话第一行实际上会是个空行。如果希望不要第一行的空行,可以在多行字符串上添加一个反斜杠\。

如果字符串引号前有一个字母r,说明这个字符串是一个原始(raw)字符串,其中的\n这样的字符不会转义,而是以字面量形式输出。

如果字符串引号前有一个字母f,表示这是一个格式化字符串。该字符串中的{variable}将会被实际的变量值所替换。该功能是Python 3.6中新增的。原始字符串和格式化字符串也可以混用。

下面是一些例子。

print('--------------字符串类型--------------')
print(f'String type:{type("")}')
print(f'string value:{"fuck"}')

multiLineString = '''\
这是一个多行字符串
首行的\\表示第一行被忽略
'''
print(multiLineString)

rawString = r"\n不会被转移"
print(f'原始字符串:{rawString}')

formattedString = f"{3.14}"
print(f'格式化字符串:{formattedString}')

列表

列表也是一种内置可变的数据结构,类似Java的List。Python的列表使用也很简单。新建列表需要空的一对方括号[]或者list()来新建一个空列表。列表有很多方法可以操作列表中的元素。直接看例子就行了。

print('--------------列表--------------')
# 新建列表
list1 = []
list2 = list()

# 插入元素
list1.append(1)
list1.append(2)
list1.extend(range(3, 6))
list1.insert(2, 9)

print(f'插入元素 list1:{list1}')

# 删除元素
list1.remove(5)
del list1[2]
print(f'删除元素 list1:{list1}')

# 清除列表
list1.clear()
print(f'清除列表 list1:{list1}')

# 栈操作
list2.append(1)
list2.append(2)
list2.pop()
print(f'list2:{list2}')

元组

元组和列表类似,不过需要注意,元组是不可变的。元组的主要作用就是让函数方便的返回多个值。创建空元组,可以使用()或者tuple()来创建。需要注意假如元组只有一个元素,那么需要在后面添加一个逗号。元组的值也可以方便的解构出来。

print('--------------元组--------------')
print(f'tuple type:{type((5,))}')

tuple1 = ()
tuple1 = tuple()
tuple2 = (1, 2, 3, 4, 5)
tuple3 = (50,)
tuple2 = (5, 6)
a, b = tuple2
print(f'a={a},b={b}')

集合

集合表示不重复的元素组合。要创建集合,只要把元素放到一对花括号中即可。如果需要空集合,不能使用{},而应该使用set()来创建。如果需要不可变集合,使用frozenset。集合的简单使用列在下面了。

print('--------------集合--------------')
print(f'set type:{type(set())}')

set1 = set()
set2 = {1, 2, 3, 4}

# 添加元素
set1.add(3)
set1.add(4)
set1.add(9)
print(f'set1 :{set1}')

# 删除元素
set1.remove(4)

# 不可变集合
set1 = frozenset(set1)

# 集合操作
print(f'交:{set1 & set2}')
print(f'并:{set1 | set2}')
print(f'差:{set1 - set2}')
print(f'对称差集:{set1 ^ set2}')

字典

字典是键值对的集合,类似于Java中的Map类型。需要注意的是Python的字典的键必须是不可变类型,也就是说键必须是数字、元组、字符串这样的对象才行。由于列表等类型是可变的,所以它们不能用作键。

创建字典使用空花括号对{}或者dict()构造函数。字典也包含了各种方法用于对元素进行操作。值得注意的几个字典的函数:keys()返回键列表;values()返回值列表;items()返回键值对组成的列表。

print('--------------字典--------------')
print(f'dict type:{type({})}')

# 创建字典
dict1 = {}
dict2 = dict()
dict2 = {1: 2, 2: 4, 3: 6}

# 字典操作
dict1[1] = 1
dict1[2] = 2
print(f'dict1:{dict1}')

dict1[2] = 3
print(f'dict1:{dict1}')

del dict1[2]
print(f'dict1:{dict1}')

# 键值集合
print(f'dict2.keys:{dict2.keys()}')
print(f'dict2.values{dict2.values()}')
for k, v in dict2.items():
    print(f"[{k}:{v}]", end=' ')
print()

集合操作

序列类型

前面说的列表、元组、字符串这些都是序列类型。它们支持功能强大的切片操作。切片操作使用切片操作符[:],会返回对应开闭区间的元素集合。如果只指定了一边的索引,那么另外一边自动扩展到端点处。

索引还可以是负数,表示从后往前数,最后一个元素索引是-1,倒数第二个是-2,以此类推。另外如果索引超出序列范围也不用担心,解释器会忽略多余的长度。

print('--------------序列类型--------------')
longString = 'abcdefghijklnm'

print(f'整个序列:{longString[:]}')
print(f'前5个:{longString[0:5]}')
print(f'后5个:{longString[-6:-1]}')
print(f'前五个之后的所有:{longString[6:]}')
print(f'后五个前面所有的:{longString[:-6]}')
print(f'所有元素:{longString[0:1000]}')

字符串、元组都是不可变的对象。所以它们的切片只能用来读取。如果是列表的话,我们还可以修改切片的值。下面的代码就将列表的一个切片修改为另一个列表。

longList = [1, 2, 2, 3, 4, 56, 6, 7, 8, 9, 0]

print(f'longList:{longList}')
longList[0:3] = [5]
print(f'longList:{longList}')

列表解析

python的列表还支持一种复杂的操作,叫做列表解析。它可以使用一个序列生成另一个列表,灵活使用的话功能非常强大。列表解析需要使用for循环语法。下面是一个将列表转换为平方列表的例子。

squareList = [i * i for i in range(1, 10)]

它与下面的for循环等价,但是写法更简洁。

for i in range(1,10):
    squareList.append(i*i)

Python官方教程上有几个更复杂的例子。例如,列表解析还可以解析多个变量,以及if表达式。

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

上面的列表解析表达式与下面的等价。

>>> for x in [1,2,3]:
...     for y in [3,1,4]:
...         if x != y:
...             combs.append((x, y))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习笔记 数据类型 的相关文章

随机推荐

  • 数组和链表的区别

    数组和链表的区别以及各自的优缺点 1 数组和链表的区别 1 数组的元素个数是固定的 而链表的结点个数可按需要增减 2 数组元素的存储单元在定义时分配 链表节点的存储单元在执行时动态向系统申请 3 数组的元素顺序关系由元素在数组中的位置 即下
  • cadence 批量一次性修改title 页码标题等

    1 在Cadence中 选中dsn 菜单选择edit gt browse gt titleblock 弹出此框时 一般选择 Use instances 2 弹出的titleblock窗口中 鼠标点击第一个 滑动到最后一个 按住 shift
  • ffmpeg webm 提取_使用ffmpeg将webm转换为mp4

    当我尝试将webm文件转换为mp4时 输出非常不连贯 并且似乎ffmpeg丢弃了许多帧 我使用以下命令进行转换 ffmpeg i movie webm movie mp4 ffmpeg i movie webm vcodec libx264
  • MySql-基础查询与排序

    基础查询与排序 2 1 SELECT语句基础 从表中选取数据 SELECT语句 从表中选取数据时需要使用SELECT语句 也就是只从表中选出 SELECT 必要数据的意思 通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询 q
  • [深入研究4G/5G/6G专题-54]: L3信令控制-3-软件功能与流程的切分-CU-UP网元的信令

    目录 第1章 软件架构 第2章 5G CP NRT 非实时 2 1 功能概述 2 2 功能细化 2 3 流程 2 4
  • git:将代码从一个分支转移到另一个分支

    参考 http www ruanyifeng com blog 2020 04 git cherry pick html 总结 git cherry pick commit的hash值 会自动commit git cherry pick n
  • opencv-python 中对PPT图象进行图象文字增强(重制含原版)

    话不多说直接上代码 这是原来的代码 import cv2 import numpy as np img cv2 imread D picture dabo goal png img cv2 resize img None fx 0 5 fy
  • C# 的继承(学习心得 19)

    继承允许我们根据一个类来定义另一个类 这使得创建和维护应用程序变得更容易 利于重用代码和节省开发时间 已有的类被称为的 基类 这个新的类被称为 派生类 继承的思想实现了 属于 IS A 关系 例如 哺乳动物 属于 IS A 动物 狗 属于
  • Windows下Ceres库的配置 包含四个依赖库Eigen、gflags、glad、suitesparse-metis-for-windows的配置

    一 首先Windows下Ceres库的配置过程中Eigen gflags glad是必须的 suitesparse虽不是必须但非常影响性能故也可以说是必须的 二 整个配置过程主要参考这一博客博主猪蹄97关于ceres库的配置 侵删 故读者在
  • ubuntu安装mysql并使用datagrip远程连接

    1 安装client sudo apt get install mysql server 2 mysql8默认不开启用户root 默认用户是debian sys maint 其默认密码是存在 etc mysql debian cnf sud
  • 构造函数调用顺序及初始化列表

    设有3个类A B C 其中A派生B B派生C 即 C gt B gt A 定义一个C对象 则 进入C对象的构造函数 检查C构造函数的初始化列表 看其中是否手动调用基类B构造函数 无论是否手动 都立即调用基类B构造函数 不同的是手动调用时 可
  • 12306验证码具体坐标

    如图 整张图片的大小是 293 190 单位 像素 包括下述 锦旗二字相对大图的范围是 117 0 258 29 长 141 宽 29 第一排第一张小图片的范围是 5 41 72 108 长 67 宽 67 间距都是5px 第二排第一张小图
  • Excel VBA 打开对话框,获取文件夹路径

    Excel 打开对话框 获取文件夹路径 Window 参照 選択 Item 名 取得 Public Function GetFolderName ByVal DialogType As MsoFileDialogType As String
  • MCCMNC列表

    http blog chinaunix net uid 20484604 id 1941290 html https clients txtnation com hc en us articles 218719768 MCCMNC mobi
  • ODrive踩坑(五)ODrive驱动云台电机、低齿槽转矩电机实现高精度定位

    前几篇介绍了ODrive在Windows下的使用环境搭建 驱动3508 5008无刷电机 TLE5012B AS5047P的ABI编码器配置 AS5047P SPI绝对值编码器配置 ODrive踩坑 一 windows下使用环境的搭建 od
  • DOPI EV200开发板开箱组装

    随着网友们 连续收到开发板 我再次开贴 分享下如何组装 插上配件 主板接口再次复习下 各位成员 再次认识下 主板链接FPC软排线的方向 Sensor链接 FPC软排线的方向 其他配件链接 这里特别强调下 WiFi请插到SDIO1上 如果插到
  • python实现分页

    使用python实现分页功能 当我们有大量数据需要展示时 需要对数据进行分页展示 这时就用到了分页功能 分页使得数据更好的展示给用户 当访问页码数大于总页码数的时候 展示第一页内容 import math content name aa a
  • 基于STM8的ADC0832采集及蓝牙通信系统

    为了方便大家学习 工程已经打包上传 http download csdn net detail devintt 8029389 最近在淘宝逛的时候发现了一款单片机 STM8 相比之前一直使用的也是8位的AVR相比 感觉STM8更为强大 芯片
  • 【计算机网络】

    1 1 1 发出一条邮件 其OSI七层模型的传输过程 参考1 参考2
  • Python学习笔记 数据类型

    要学习一门语言 首先要看看它的数据类型 由于Python是一门动态语言 所以Python的变量在声明时不需要类型 只要写出名称即可 这里所用的Python版本是目前最新的Python 3 6 1 数字类型 整数 在Python中只有一种整数