当前位置: 首页 > news >正文

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语言中如何产生一个随机数呢&#xff1f;用rand()函数。 rand()函数在头文件&#xff1a;#include <stdio.h>中&#xff0c;函数原型&#xff1a;int rand(void);。rand()会返回一个范围在0到RAND_MAX&#xff08;32767&#xff09;之间的随机数&#xff08;整数&…...

关于系统架构

1.系统架构分类: C/S架构 B/S架构 2.C/S架构 Client / Server&#xff08;客户端 / 服务器&#xff09; 特点&#xff1a;需要安装特定的客户端软件。 C/S架构的系统优点和缺点: 优点&#xff1a; 1)速度快(软件中数据大部分都是集成到客户端当中&#xff0c;很少量的数据从服…...

LeetCode 1237. 找出给定方程的正整数解

原题链接 难度&#xff1a;middle\color{orange}{middle}middle 2023/2/18 每日一题 题目描述 给你一个函数 f(x,y)f(x, y)f(x,y) 和一个目标结果 zzz&#xff0c;函数公式未知&#xff0c;请你计算方程 f(x,y)zf(x,y) zf(x,y)z 所有可能的正整数 数对 xxx 和 yyy。满足条件…...

【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置

新增的自定义控件一般放在默认的【加载项】选项卡下&#xff0c;但是根据需求&#xff0c;我们可能需要将控件放在新的自定义选项卡下&#xff0c;在自定义选项卡添加系统自带的控件&#xff0c;将自定义的按钮等控件放在右键菜单栏里以方便使用&#xff0c;等等。 下面就以一…...

学习OpenGL图形2D/3D编程

环境&#xff1a;WindowsVisual Studio 2019最流行的几个库&#xff1a;GLUT&#xff0c;SDL&#xff0c;SFML和GLFWGLFWGLAD库查看显卡OPENGL支持情况VS2019glfwgladopenGL3.3顶点着色器片段着色器VAO-VBO-(EBO)->渲染VAO-VBO-EBO->texture纹理矩阵matrix对图形transfor…...

2023美赛思路 | A题时间序列预测任务的模型选择总结

2023美赛思路 | A题时间序列预测任务的模型选择总结 目录 2023美赛思路 | A题时间序列预测任务的模型选择总结基本介绍数据描述任务介绍时序模型基本介绍 这道题分析植被就行,主要涉及不同植被间的相互作用,有竞争有相互促进,我查了下“植物科学数据中心”和“中国迁地保护植…...

PHP教材管理系统设计(源代码+毕业论文)

【P003】PHP教材管理系统设计&#xff08;源代码论文&#xff09; 设计方案 本系统采用B/S结构&#xff0c;所有的程序及数据都放在服务器上&#xff0c;终端在取得相应的权限后使用Web页面浏览&#xff0c;录入&#xff0c;修改等功能。在语言方面使用PHP语言&#xff0c;在…...

nps内网穿透工具

一、准备一台有公网ip的服务器 https://github.com/ehang-io/nps/releases 在这个地址下载服务端的安装包&#xff0c;centos的下载这个 上传到服务器上。 二、然后解压&#xff0c;安装&#xff0c;启动 [rootadministrator ~]# tar xzvf linux_amd64_server.tar.gz [roo…...

webpack打包时的热模块替代配置以及source-map

1.HMR 在devServer当中添加hot:true 热模块化功能 含义:当其中有一个文件发生变化的时候&#xff0c;那么就会被重新打包一次&#xff0c;极大的提高了构建速度 A.样式文件:可以使用HMR功能&#xff0c;因为在style-loader当中实现了 B.js文件:默认不能使用HMR功能&#xf…...

Seata架构篇 - TCC模式

TCC 模式 概述 TCC 是分布式事务中的两阶段提交协议&#xff0c;它的全称为 Try-Confirm-Cancel&#xff0c;即资源预留&#xff08;Try&#xff09;、确认操作&#xff08;Confirm&#xff09;、取消操作&#xff08;Cancel&#xff09;。Try&#xff1a;对业务资源的检查并…...

前端最全面试题整理

前端基础 一、 HTTP/HTML/浏览器 1、说一下 http 和 https https 的 SSL 加密是在传输层实现的。 (1) http 和 https 的基本概念 http: 超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;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 兼容性注意&#xff1a;仅桌面支持二进制兼容性。 Tegra 不支持它。 此外&#xff0c;不支持桌面和 Tegra 之间的二进制兼容性。3.1.3 PTX 兼容性3.1.4 应用程序兼容性3.1…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...