【Python学习笔记】6. Python3 基本数据类型(下)——列表、元组、集合、字典、数据类型转换

news2024/9/22 11:29:48

前言

本文介绍Python3基本数据类型——列表、元组、集合、字典、数据类型转换。

List(列表)

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
在这里插入图片描述
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:

实例

#!/usr/bin/python3

list = [ 'abcd', 786 , 2.23, 'csdn', 70.2 ]
tinylist = [123, 'csdn']

print (list)            # 输出完整列表
print (list[0])         # 输出列表第一个元素
print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

以上实例输出结果:

[‘abcd’, 786, 2.23, ‘csdn’, 70.2]
abcd
[786, 2.23]
[2.23, ‘csdn’, 70.2]
[123, ‘csdn’, 123, ‘csdn’]
[‘abcd’, 786, 2.23, ‘csdn’, 70.2, 123, ‘csdn’]

与Python字符串不一样的是,列表中的元素是可以改变的:

实例

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = []   # 将对应的元素值设置为 []
>>> a
[9, 2, 6]

List 内置了有很多方法,例如 append()、pop() 等等,这在后面会讲到。

注意:
1、List写在方括号之间,元素用逗号隔开。
2、和字符串一样,list可以被索引和切片。
3、List可以使用+操作符进行拼接。
4、List中的元素是可以改变的。

Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:
在这里插入图片描述
如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:

实例

def reverseWords(input):
     
    # 通过空格将字符串分隔符,把各个单词分隔为列表
    inputWords = input.split(" ")
 
    # 翻转字符串
    # 假设列表 list = [1,2,3,4],  
    # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
    # inputWords[-1::-1] 有三个参数
    # 第一个参数 -1 表示最后一个元素
    # 第二个参数为空,表示移动到列表末尾
    # 第三个参数为步长,-1 表示逆向
    inputWords=inputWords[-1::-1]
 
    # 重新组合字符串
    output = ' '.join(inputWords)
     
    return output
 
if __name__ == "__main__":
    input = 'I like csdn'
    rw = reverseWords(input)
    print(rw)

输出结果为:

csdn like I

Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

元组中的元素类型也可以不相同:

实例

#!/usr/bin/python3

tuple = ( 'abcd', 786 , 2.23, 'csdn', 70.2  )
tinytuple = (123, 'csdn')

print (tuple)             # 输出完整元组
print (tuple[0])          # 输出元组的第一个元素
print (tuple[1:3])        # 输出从第二个元素开始到第三个元素
print (tuple[2:])         # 输出从第三个元素开始的所有元素
print (tinytuple * 2)     # 输出两次元组
print (tuple + tinytuple) # 连接元组

以上实例输出结果:

(‘abcd’, 786, 2.23, ‘csdn’, 70.2)
abcd
(786, 2.23)
(2.23, ‘csdn’, 70.2)
(123, ‘csdn’, 123, ‘csdn’)
(‘abcd’, 786, 2.23, ‘csdn’, 70.2, 123, ‘csdn’)

元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。

其实,可以把字符串看作一种特殊的元组。

实例

>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0])
1
>>> print(tup[1:5])
(2, 3, 4, 5)
>>> tup[0] = 11  # 修改元组元素的操作是非法的
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

string、list 和 tuple 都属于 sequence(序列)。

注意:
1、与字符串一样,元组的元素不能修改。
2、元组也可以被索引和切片,方法一样。
3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
4、元组也可以使用+操作符进行拼接。

Set(集合)

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:
parame = {value01,value02,...}
或者
set(value)

实例

#!/usr/bin/python3

sites = {'Google', 'Taobao', 'csdn', 'Facebook', 'Zhihu', 'Baidu'}

print(sites)   # 输出集合,重复的元素被自动去掉

# 成员测试
if 'csdn' in sites :
    print('csdn 在集合中')
else :
    print('csdn 不在集合中')


# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a)

print(a - b)     # a 和 b 的差集

print(a | b)     # a 和 b 的并集

print(a & b)     # a 和 b 的交集

print(a ^ b)     # a 和 b 中不同时存在的元素

以上实例输出结果:

{‘Zhihu’, ‘Baidu’, ‘Taobao’, ‘csdn’, ‘Google’, ‘Facebook’}
csdn 在集合中
{‘b’, ‘c’, ‘a’, ‘r’, ‘d’}
{‘r’, ‘b’, ‘d’}
{‘b’, ‘c’, ‘a’, ‘z’, ‘m’, ‘r’, ‘l’, ‘d’}
{‘c’, ‘a’}
{‘z’, ‘b’, ‘m’, ‘r’, ‘l’, ‘d’}

Dictionary(字典)

字典(dictionary)是Python中另一个非常有用的内置数据类型。

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

实例

#!/usr/bin/python3

dict = {}
dict['one'] = "1 - python学习"
dict[2]     = "2 - python笔记"

tinydict = {'name': 'csdn','code':1, 'site': 'www.csdn.com'}


print (dict['one'])       # 输出键为 'one' 的值
print (dict[2])           # 输出键为 2 的值
print (tinydict)          # 输出完整的字典
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值

以上实例输出结果:

1 - python学习
2 - python笔记
{‘name’: ‘csdn’, ‘code’: 1, ‘site’: ‘www.csdn.com’}
dict_keys([‘name’, ‘code’, ‘site’])
dict_values([‘csdn’, 1, ‘www.csdn.com’])

构造函数 dict() 可以直接从键值对序列中构建字典如下:

实例

>>> dict([('csdn', 1), ('Google', 2), ('Taobao', 3)])
{'csdn': 1, 'Google': 2, 'Taobao': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(csdn=1, Google=2, Taobao=3)
{'csdn': 1, 'Google': 2, 'Taobao': 3}

{x: x**2 for x in (2, 4, 6)} 该代码使用的是字典推导式,更多推导式内容可以参考:Python 推导式。

另外,字典类型也有一些内置的函数,例如 clear()、keys()、values() 等。

注意:
1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }。

Python数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可,在下一章节 Python3 数据类型转换 会具体介绍。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数描述
int(x [,base])将x转换为一个整数
float(x)将x转换到一个浮点数
complex(real [,imag])创建一个复数
str(x)将对象 x 转换为字符串
repr(x)将对象 x 转换为表达式字符串
eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
set(s)转换为可变集合
dict(d)创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s)转换为不可变集合
chr(x)将一个整数转换为一个字符
ord(x)将一个字符转换为它的整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL存储结构

数据结构 数据结构可视化&#xff1a;https://www.cs.usfca.edu/~galles/visualization/ 树 二叉树缺点&#xff1a; 单边节点过多时无法提高效率 红黑树&#xff1a; 具有平衡功能的二叉树&#xff0c;解决了单边节点过多导致的效率无法提高的问题&#xff0c;缺点是平衡算法…

移动端 自适应布局方案

文章目录DPRrem布局实现机理优点缺点相关技术方案viewport 布局优点缺点相关技术方案媒体查询等比缩放原理DPR DPR 设备物理像素 / CSS像素 DPR 2 为例&#xff0c;把 4&#xff08;2x2&#xff09;个物理像素当一个 CSS 像素使用 rem布局 rem 就是相对于根元素 html 的…

【正点原子FPGA连载】第二十章Linux图形化配置及其原理 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十章Linux图…

Python获取信用企业的数据

文章目录前言一、需求二、分析三、测试运行前言 本系列文章来源于真实的需求本系列文章仅供学习参考本系列文章你来提我来做 one:Leave a message at the end of the article two:Get wechat contact information 一、需求 需求 URL&#xff1a;https://szxt.zjamr.zj.gov.cn…

如何保持线上安全:你们的个人网络安全指南

在互联网上保持安全的最佳做法。 我们之前写过关于保护你们的加密资产的文章——你们可以在此处查看我们的加密操作安全指南。现在是时候准备一组更通用的提示来帮助你们保持线上安全。我们知道你们可能大部分的购物都是在网上进行的&#xff0c;我们真的不希望你们被黑客攻击。…

HTB_Funnel_ssh隧道转发

文章目录信息收集hydra ssh 暴破ssh 隧道转发 postgresql 流量postgresql 使用动态端口转发信息收集 nmap -sC -sV 10.129.143.249 账号密码 Anonymous:ftp 发现两个文件&#xff0c;下载 默认密码 funnel123#!# 一封邮件 邮箱名可能是用户名 hydra ssh 暴破 hydra -L userna…

Redis_主从复制

一、介绍主机数据更新后根据配置和策略&#xff0c;自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主。二、作用读写分离&#xff0c;性能拓展容灾快速恢复&#xff08;一主多从&#xff09;三、搭建配置1、创建/myredis文件夹2、复制Re…

一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (二)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

【GPLT 二阶题目集】L2-041 插松枝

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上&#xff0c;做成大大小小的松枝。他们的工作流程&#xff08;并不&#xff09;是这样的&#xff1a; --->每人手边有一只小盒子&#xff0c;初始状态为空。 --->每人面前有用不完的松枝干和一个推送器&#xf…

[NSSRound#7 Team]Web学习

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录系列文章目录一、ecRCE二、Shadowflag三、[NSSRound#7 Team]新的博客四、[NSSRound#7 Team]0o0提示&#xff1a;以下是本篇文章正文内容&#xff0c;下…

【异常】发送失败,此请求可能存在风险,已被微信拦截

一、背景说明 今天上线了新年红包的功能&#xff0c;但是部分用户提示了如下的异常&#xff0c;没有明显的异常提示&#xff0c;就是在查询ELK时&#xff0c;看了如下的错误提示&#xff0c;错误截图如图 提示“发送失败&#xff0c;此请求可能存在风险&#xff0c;已被微信拦…

【Redis】hmdp点赞、排行榜、分页功能的实现

【Redis】hmdp点赞、排行榜、分页功能的实现 文章目录【Redis】hmdp点赞、排行榜、分页功能的实现1.点赞功能实现1.1 需求1.2 实现步骤1.3 思路分析1.4 代码实现1.5 逻辑解析2. 排行榜功能实现2.1 需求2.2 实现步骤2.3 思路分析2.4 代码实现2.5 逻辑解析3. 分页功能实现3.1 需求…

算法之美~贪心算法

如何理解贪心算法&#xff1f;假设有一个可以容纳100kg物品的背包&#xff0c;可以装各种物品。有以下5种豆子&#xff0c;每种豆子的总量和总价值都各不相同。为了让背包中所装物品的总价值最大&#xff0c;如何选择在背包中装哪些豆子&#xff1f;每种豆子又该装多少呢&#…

Pikachu靶场攻略(代码分析)

2023年将会持续于B站、CSDN等各大平台更新&#xff0c;可加入粉丝群与博主交流:838681355&#xff0c;为了老板大G共同努力。 一、安装 Phpstudy_pro设置数据库用户名密码 root 123456 更改\pikachu\inc\config.inc.php 访问pikachu页面点击配置即可。 二、 攻略(包含审计…

BiQuadDesigner相关算法研究

一、获取相关源码方法如下 1、打开BiQuadDesigner相关网页如下 2、菜单:更多工具->开发者工具 3、在此重点研究BiQuadDesigner,选择BiQuadDesigner下的javascript,分别查看BiQuad.js和BiQuadFilter.js 二、研究频响曲线生成步骤如下 1、参数输入及换算滤波器系数如下参…

【数据结构基础】线性表 - 栈和队列

知识点栈 - LIFO示意图实现使用数组实现的叫静态栈使用链表实现的叫动态栈队列 - FIFO示意图实现使用数组实现的叫静态队列使用链表实现的叫动态队列栈和队列相关题目用栈实现队列232. Implement Queue using Stacks (Easy)栈的顺序为后进先出&#xff0c;而队列的顺序为先进先…

【前端设计】复位保护模块的整体设计思路

前言 复位保护模块,是在单系统进行动态复位的过程中,对接口进行硬性逻辑保护,避免异步复位过程中的毛刺对周围系统产生影响的模块。一般而言,简单的单系统动态复位流程可以归纳为: 停止业务功能,收齐接口上的rsp,进入待复位状态;使能复位保护,通过逻辑避免毛刺和误触…

【SCL】博图SCL语言回顾和第一个面向对象程序

西门子SCL语言回顾复习和编写第1个面向对象程序 &#xff08;形参&#xff1a;形参指的是指令上标记该指令要使用的数据位置的标识符;简单来说就是只有数据类型&#xff0c;没有实际的地址&#xff0c;在调用时可以写入&#xff09;。 &#xff08;实参&#xff1a;实参指的是包…

并发编程学习(九):同步模式之顺序控制、交替打印

1、固定运行顺序例如&#xff1a;两个线程&#xff0c;运行是必须先2后1打印。1.1、Object之wait、notify版在同步代码块中&#xff0c;wait开始后&#xff0c;CPU将释放给另一个线程使用&#xff0c;直到①若wait(xxxx)&#xff0c;则x秒后当前线程被唤醒&#xff0c;继续占用…

STM32项目设计:基于stm32f103c8t6智能电梯系统

文章目录一、项目功能概述二、项目材料选择三、原理图设计四、PCB板设计五、主程序设计六、成品展示资料链接&#xff1a;待更新~ 哔哩哔哩视频链接&#xff1a;https://www.bilibili.com/video/BV17D4y1V7HG/?vd_sourcee5082ef80535e952b2a4301746491be0&#xff08;bilibili…