Python快速入门系列之一:Python对象
Python对象
- 1. 列表(list)
- 2. 元组(tuple)
- 3. 字典(dict)
- 4. 集合(set)
- 5. 字符串(string)
- 6. BIF (Built-in Function)
- 7. 列表、集合以及字典的推导式
Python对象是一种强类型引用,所有对象都有一个特定类型(或类)。
- 可用
type(a)查看对象a的类型 - 用
isinstance(a,int)查看对象a是否指定类型。
大部分Python对象是可变的(mutable),如列表(list)、字典(dict)、Numpy数组以及大部分用户自定义类型;字符串(string)和元组(tuple) 是不可变的。
1. 列表(list)
(1) 列表的定义
列表是一个数据集合,动态的,可以随需要伸缩,数据使用的所有内存都由python管理。通过方括号([])或list()函数定义。
e.g.
a_list=[2,3,7,None]
tup=('foo','bar','baz')
b_list=list(tup)
(2)列表的切片

访问列表的多个数据可以使用切片,如a_list[0:3]
使用-1,可以实现列表(或元组的反序),如a_list[::-1]。
e.g.
a_list = ['a','b','c','h','e']
a_list[:2]
输出:
[‘a’, ‘b’]
a_list[0:5:2] #[start:end:step]
输出:
[‘a’, ‘c’, ‘e’]
a_list[::-1]
输出:
[‘e’, ‘h’, ‘c’, ‘b’, ‘a’]
(3)列表的方法
append() 将元素添加到列表末尾
insert() 将元素插入到列表指定位置
pop() 移除并返回指定索引处的元素
remove() 按值删除元素
sort() 排序
count() 列表中对象的计数
a_list = ['a','b','c','h','e']
a_list.append('a')
a_list
输出:
[‘a’, ‘b’, ‘c’, ‘h’, ‘e’, ‘a’]
a_list.count('a')
输出:
2
a_list.sort()
a_list
输出:
[‘a’, ‘a’, ‘b’, ‘c’, ‘e’, ‘h’]
2. 元组(tuple)
元组是一种一维的、定长的、不可变的Python对象序列。
最简单的创建方式是一组以逗号隔开的值。
对元组型变量表达式进行赋值,Python就会尝试将等号右侧的值进行拆包(unpacking)。
e.g.
my_tuple = (1,3,'a','hello')
3. 字典(dict)
(1) 字典的定义
字典是一种大小可变的键值对集,字典的值可以是任何Python对象,但键必须是不可变对象。
创建字典可使用{}或dict()工厂函数:
new_d={} 或 new_d=dict()
然后增加数据
d['name']='Eric Idle' 也可 new_d={'name':'Eric Idle'}
将两个序列中的元素两两配对地组成一个字典: maping=dict(zip(range(5),reversed(range(5))))
e.g.
# dict([k1,v1],[k2,v2]...)
valList = ['a','b','c','d','e']
mapping=dict(zip(range(5),valList))
print(mapping)
输出:
{0: ‘a’, 1: ‘b’, 2: ‘c’, 3: ‘d’, 4: ‘e’}
(2)字典的方法
keys()和values() 分别用于获取键和值,分别返回字典中键和值的列表
d1.update(d2) 添加d2中所有项目到d1
list(d)字典的键的列表
sorted(d) 字典的键的列表,排序
key in d 测试特定的键是否在字典中
for key in d 遍历字典的键
dict([k1,v1],[k2,v2],...) 从一个键-值对列表创建一个字典
e.g.
for key in mapping:print(mapping[key])
输出:
a
b
c
d
e
4. 集合(set)
集合是由唯一元素组成的无序集,可以看做只有键没有值的字典。
创建集合可使用{}或set()工厂函数。
e.g.
a_list = ['a','b','c','h','e','a','e']
a_set = set(a_list)
b_set = {'a','b','c','h','e','a','e'}
集合支持交(&)、并(|)、差(-)、异或(^)的操作。
5. 字符串(string)
Python字符串是不可变的,可以使用单引号(‘)或双引号("),对于带有换行符的多行字符串,可以使用三重引号(’''或"“”)。
反斜杠(\)是转义字符(escape character),可用于指定特殊字符(如\n或unicode字符)。在字符串最左边引号前加上r,表示所有字符按照原样进行转义。
string对象的主要方法:
split() 将一个字符串分解为一个子串列表
find() 在一个字符串中查找一个特定字串
strip() 从字符串去除不需要的空白符
字符串是一串字符序列,可以被当做某种序列类型(如列表、元组等)进行处理。
可以把一个字符串赋值给一个变量,索引一个字符串,切片一个字符串。
e.g.
name = 'Monty'
name[0]
输出:
‘M’
name[:4]
输出:
‘Mont’
name = '.'.join(['Monty','Python'])
name
输出:
‘Monty.Python’
name.split('.')
输出:
[‘Monty’, ‘Python’]
name.find('Python')
输出:
6
name.find('on')
输出:
1
name.find('Monpy')
输出:
-1
6. BIF (Built-in Function)
str() 用来访问任何数据对象(支持串转换)的串表示。
isinstance() 检查一个标识符是否指示某个指定类型的数据对象。
range() 与for结合使用,迭代固定次数。
sorted() 将任何序列返回一个新的有序列表,传入reverse=True可以按降序排列数据。sorted()和set()结合可以得到一个由序列中的唯一元素组成的有序列表。
enumerate()可以逐个返回序列的(i,value)元组。
for item in s 遍历s中的元素
for item in sorted(s) 按顺序遍历s中的元素
for item in reversed(s) 按逆序遍历s中的元素
for item in set(s) 遍历s中无重复的元素
for item in set(s).difference(t) 遍历在集合s中不在t的元素
for item in random.shuffle(s) 随机遍历s中的元素
zip()用于将多个序列(列表、元组)中的元素配对,从而产生一个新的元组列表。zip()可以接受任意数量的序列,最终得到的元组数量由最短的序列决定。
e.g.
seq1 = ['foo','bar','baz']
seq2 = ['one','two','three']
zip(seq1,seq2)
for i,(a,b) in enumerate(zip(seq1,seq2)):print('%d:%s,%s' %(i,a,b))
输出:
0:foo,one
1:bar,two
2:baz,three
对于“已压缩的”(zipped)序列,zip()可对该序列进行“解压”(unzip)。
e.g.
pitchers = [('Nolan','Ryan'),('Roger','Clemens'),('Schilling','Curt')]
first_names,last_names = zip(*pitchers)
print(first_names, last_names)
输出:
(‘Nolan’, ‘Roger’, ‘Schilling’) (‘Ryan’, ‘Clemens’, ‘Curt’)
7. 列表、集合以及字典的推导式
new_l = []
for t in old_l:new_l.append(len(t))
列表推导(函数编程):
new_l = [len(t) for t in old_l]
e.g.
strings = ['a','as','bat','car','car','dove','python']
[s.upper() for s in strings if len(s)>2]
输出:
[‘BAT’, ‘CAR’, ‘CAR’, ‘DOVE’, ‘PYTHON’]
{s.upper() for s in strings if len(s)>2}
输出:
{‘BAT’, ‘CAR’, ‘DOVE’, ‘PYTHON’}
{index:val for index,val in enumerate(strings)}
输出:
{0: ‘a’, 1: ‘as’, 2: ‘bat’, 3: ‘car’, 4: ‘car’, 5: ‘dove’, 6: ‘python’}
dict((index,val) for index,val in enumerate(strings))
输出:
{0: ‘a’, 1: ‘as’, 2: ‘bat’, 3: ‘car’, 4: ‘car’, 5: ‘dove’, 6: ‘python’}
相关文章:
Python快速入门系列之一:Python对象
Python对象1. 列表(list)2. 元组(tuple)3. 字典(dict)4. 集合(set)5. 字符串(string)6. BIF (Built-in Function)7. 列表、集合以及字…...
【博客626】不同类型的ARP报文作用以及ARP老化机制
不同类型的ARP报文作用以及ARP老化机制 1、ARP协议及报文 2、不同类型的ARP报文作用 3、ARP工作原理 4、ARP老化机制 5、Linux ARP老化机制 ARP状态机: 在上图中,我们看到只有arp缓存项的reachable状态对于外发包是可用的,对于stale状态的…...
nacos discovery和config
微服务和nacos版本都在2.x及之后。1、discovery用于服务注册,将想要注册的服务注册到nacos中,被naocs发现。pom引入的依赖是:yml配置文件中:2、config用于获取nacos配置管理->配置列表下配置文件中的内容pom引入的依赖是&#…...
【算法数据结构体系篇class06】:堆、大根堆、小根堆、优先队列
一、堆结构1)堆结构就是用数组实现的完全二叉树结构2)完全二叉树中如果每棵子树的最大值都在顶部就是大根堆3)完全二叉树中如果每棵子树的最小值都在顶部就是小根堆4)堆结构的heapInsert与heapify操作5)堆结构的增大ad…...
试题 算法提高 最小字符串
资源限制内存限制:256.0MB C/C时间限制:2.0s Java时间限制:6.0s Python时间限制:10.0s问题描述给定一些字符串(只包含小写字母),要求将他们串起来构成一个字典序最小的字符串。输入格式第一行T,表示有T组数据。接下来T…...
已解决ImportError: cannot import name ‘featureextractor‘ from ‘radiomics‘
已解决from radiomics import featureextractor导包,抛出ImportError: cannot import name ‘featureextractor‘ from ‘radiomics‘异常的正确解决方法,亲测有效!!! 文章目录报错问题报错翻译报错原因解决方法联系博…...
乡村振兴研究:全网最全指标农村经济面板数据(2000-2021年)
数据来源:国家统计局 时间跨度:2000-2021年 区域范围:全国31省 指标说明: 部分样例数据: 行政区划代码地区年份经度纬度乡镇数(个)乡数(个)镇数(个)村民委员会数(个)乡村户数(万户)乡村人口(万人)乡村从业人员(万人…...
C语言中用rand()函数产生一随机数
在C语言中如何产生一个随机数呢?用rand()函数。 rand()函数在头文件:#include <stdio.h>中,函数原型:int rand(void);。rand()会返回一个范围在0到RAND_MAX(32767)之间的随机数(整数&…...
关于系统架构
1.系统架构分类: C/S架构 B/S架构 2.C/S架构 Client / Server(客户端 / 服务器) 特点:需要安装特定的客户端软件。 C/S架构的系统优点和缺点: 优点: 1)速度快(软件中数据大部分都是集成到客户端当中,很少量的数据从服…...
LeetCode 1237. 找出给定方程的正整数解
原题链接 难度:middle\color{orange}{middle}middle 2023/2/18 每日一题 题目描述 给你一个函数 f(x,y)f(x, y)f(x,y) 和一个目标结果 zzz,函数公式未知,请你计算方程 f(x,y)zf(x,y) zf(x,y)z 所有可能的正整数 数对 xxx 和 yyy。满足条件…...
【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置
新增的自定义控件一般放在默认的【加载项】选项卡下,但是根据需求,我们可能需要将控件放在新的自定义选项卡下,在自定义选项卡添加系统自带的控件,将自定义的按钮等控件放在右键菜单栏里以方便使用,等等。 下面就以一…...
学习OpenGL图形2D/3D编程
环境:WindowsVisual Studio 2019最流行的几个库:GLUT,SDL,SFML和GLFWGLFWGLAD库查看显卡OPENGL支持情况VS2019glfwgladopenGL3.3顶点着色器片段着色器VAO-VBO-(EBO)->渲染VAO-VBO-EBO->texture纹理矩阵matrix对图形transfor…...
2023美赛思路 | A题时间序列预测任务的模型选择总结
2023美赛思路 | A题时间序列预测任务的模型选择总结 目录 2023美赛思路 | A题时间序列预测任务的模型选择总结基本介绍数据描述任务介绍时序模型基本介绍 这道题分析植被就行,主要涉及不同植被间的相互作用,有竞争有相互促进,我查了下“植物科学数据中心”和“中国迁地保护植…...
PHP教材管理系统设计(源代码+毕业论文)
【P003】PHP教材管理系统设计(源代码论文) 设计方案 本系统采用B/S结构,所有的程序及数据都放在服务器上,终端在取得相应的权限后使用Web页面浏览,录入,修改等功能。在语言方面使用PHP语言,在…...
nps内网穿透工具
一、准备一台有公网ip的服务器 https://github.com/ehang-io/nps/releases 在这个地址下载服务端的安装包,centos的下载这个 上传到服务器上。 二、然后解压,安装,启动 [rootadministrator ~]# tar xzvf linux_amd64_server.tar.gz [roo…...
webpack打包时的热模块替代配置以及source-map
1.HMR 在devServer当中添加hot:true 热模块化功能 含义:当其中有一个文件发生变化的时候,那么就会被重新打包一次,极大的提高了构建速度 A.样式文件:可以使用HMR功能,因为在style-loader当中实现了 B.js文件:默认不能使用HMR功能…...
Seata架构篇 - TCC模式
TCC 模式 概述 TCC 是分布式事务中的两阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel)。Try:对业务资源的检查并…...
前端最全面试题整理
前端基础 一、 HTTP/HTML/浏览器 1、说一下 http 和 https https 的 SSL 加密是在传输层实现的。 (1) http 和 https 的基本概念 http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(T…...
大数据之-Nifi-监控nifi数据流信息_监控数据来源_bub轻松复现---大数据之Nifi工作笔记0011
通过数据流功能可以轻松复现,数据的流向在某个时间点数据是怎么流动的,出现了什么问题,太强大了.. 真的是,可以看到通过右键,处理器,打开view data province就可以看到, 上面是处理器处理数据的详细信息 点击左侧的详情图标可以查看详情信息,details是这个事件处理的内容详情,…...
CUDA编程接口
编程接口 文章目录编程接口3.1利用NVCC编译3.1.1编译流程3.1.1.1 离线编译3.1.1.2 即时编译3.1.2 Binary 兼容性注意:仅桌面支持二进制兼容性。 Tegra 不支持它。 此外,不支持桌面和 Tegra 之间的二进制兼容性。3.1.3 PTX 兼容性3.1.4 应用程序兼容性3.1…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
