Python快速入门系列之一:Python对象

news2024/9/24 13:25:29

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’}

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

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

相关文章

小笔记:gitlab配置文件 /etc/gitlab/gitlab.rb 配置项

小笔记:gitlab配置文件 /etc/gitlab/gitlab.rb 配置项CSDN账号 jcLee95 :https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/12…

0.3调试opencv源码的两种方式

调试opencv源码的两种方式 上两篇我们分别讲了如何配置opencv环境,以及如何编译opencv源码方便我们阅读。但我们还是无法调试我们的代码,无法以我们的程序作为入口来一步一步单点调试看opencv是如何执行的。 【opencv源码解析0.1】VS如何优雅的配置ope…

Python学习-----模块1.0(模块的简介、定义与使用)

目录 前言: 1.什么是模块 2.模块的分类 (1)内置模块 (2)第三方模块 (3)自定义模块 3.模块的使用 4.自定义模块 5.模块和执行文件的判断 前言: 今天就开始讲Python中的模块篇…

第07章_单行函数

第07章_单行函数 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 函数的理解 1.1 什么是函数 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经…

netty心跳

为什么要引入心跳机制:因为网络连接是不可靠的,像在TCP长连接或者webSocket长连接时都会使用心跳机制,即发送特殊的数据包告诉自己的业务没办完,不要关闭连接。案例要求:当服务器超过3秒没有读时,就提示读空…

二维数组中的查找(两种解法,各有千秋)

凡事都有可能,永远别说永远。——《放牛班的春天》今天一题为再一个行列都有序的二维数组中寻找一个目标值,我们第一时间想到的可能是很暴力的解法,例如从头到尾进行遍历,这样能做出来,但是借用武忠祥老师的一句话&…

15-基础加强-1-类加载器反射

文章目录1.类加载器1.1类加载器【理解】1.2类加载的过程【理解】1.3类加载的分类【理解】1.4双亲委派模型【理解】1.5ClassLoader 中的两个方法【应用】2.反射2.1反射的概述【理解】2.2获取Class类对象的三种方式【应用】 第1步:获取类的Class对象2.3反射获取构造方…

【FiddlerScript】利用Fiddler中的FiddlerScript解除4399小游戏的防沉迷

本文仅供技术探讨,切勿用于非法用途案例网站:小游戏,4399小游戏,小游戏大全,双人小游戏大全 - www.4399.com准备的工具:配置好的Fiddler一个Fiddler官方英文版配置教程:https://www.bilibili.com/video/BV1rP4y1t7ZLFiddler中文版配重教程:https://www.bilibili.com…

懒加载以及预加载相关概念

⼆、懒加载 1. 懒加载的概念 懒加载也叫做延迟加载、按需加载,指的是在⻓⽹⻚中延迟加载图⽚数据,是⼀种较好的⽹⻚性能优化 的⽅式。 在⽐较⻓的⽹⻚或应⽤中,如果图⽚很多,所有的图⽚都被加载出来,⽽⽤户只能看到…

创建vue项目

前提安装node.js 安装vue脚手架 命令: npm install -g vue/cli 安装完成后查看下版本 vue --version 开始创建vue项目,可以用cmd终端也可以用pow(Windows PowerShell) 搜索输入pow以管理员运行 找一个项目存放位置 pow进入该目录 创建项目命令 如果创建项目时候报错 输入…

解读|奔驰财报展现强大现金实力,2年内回购价值40亿欧元股票

2月17日,梅赛德斯-奔驰集团股份公司(股票代码:MBG)发布了拆分后的第一个财年业绩报告,2022年,该集团实现营业总收入1500.17亿欧元,同比上年增长35%;实现税前利润为204.58亿欧元&…

【基础】Flink -- ProcessFunction

Flink -- ProcessFunction处理函数概述处理函数基本处理函数 ProcessFunction按键分区处理函数 KeyedProcessFunction定时器与定时服务基于处理时间的分区处理函数基于事件时间的分区处理函数窗口处理函数 ProcessWindowFunction应用案例 -- Top N处理函数概述 为了使代码拥有…

基于Springbot+微信小程序的购药平台的设计与实现

基于Springbot微信小程序的购药平台的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、…

Jackson 序列化:Cannot deserialize value of type `java.time.LocalDateTime`

问题描述 使用 jackson 反序列化异常如下: Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type java.time.LocalDateTime from String “2023-02-13 19:43:01”: Failed to deserialize java.time.LocalDat…

MySQL的四种事务隔离级别

目录一、事务的基本要素(ACID)1、原子性(Atomicity):2、一致性(Consistency):3、隔离性(Isolation):4、持久性(Durability&#xff09…

使用canvas给上传的整张图片添加平铺的水印

写在开头 哈喽,各位倔友们又见面了,本章我们继续来分享一个实用小技巧,给图片加水印功能,水印功能的目的是为了保护网站或作者版权,防止内容被别人利用或白嫖。 但是网络中,是没有绝对安全的,…

iOS接入Google登录

1.在Google Cloud后台配置客户端ID 首先要在 Google Cloud 中创建一个项目。新创建的Project需要先配置同意屏幕。一共有4步骤需要配置。 1.OAuth 同意屏幕 User Type选择"外部"进行创建。填写必必要的信息,应用名称、用户支持电子邮件地址、开发者电子邮…

chatGPT是什么?chatGPT运用场景有哪些?

大家好,小编来为大家解答以下问题 chatGPT是什么?,chatGPT概念股有哪些?一个有趣的事情,一个有趣的事情,现在让我们一起来看看吧! 1、chatpgt是什么 ChatGPT是OpenAI开发的大型预训练语言模型。…

yolov5 onnx 前后处理+运行推理(暂记)

代码在这个基础上改的,虽然跑通了,还是很混乱,这里先简单记录一下处理的流程: yolov5 环境设置yolov5 网络结构ONNX yolov5导出 convert error --grid番外:onnx直接操作番外:yolov5的重新训练 result 0 -…

[安装之4] 联想ThinkPad 加装固态硬盘教程

方案:保留原有的机械硬盘,再加装一个固态硬盘作为系统盘。由于X250没有光驱,这样就无法使用第二个2.5寸的硬盘。还好,X250留有一个M.2接口,这样,就可以使用NGFF M.2接口的固态硬盘。不过,这种接…