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

2-python的变量类型

内容提要

主要回顾了python中的变量类型,区分它们和c++中的区别
python中的数字没有long
python中的字符串不能被改变,也就是说不能对其内字符元素进行赋值操作
python中列表的数据类型与c++访问方式有一定的区别列表的下标可以是负数,无论正负,都是从左侧开始,从左到右依次递增。还有截取操作[头:尾:步长),+表示连接,*表示重复。
列表与元组类型的区别
字典类型的使用(类似于map)

python的变量类型

python中常见的数据类型:

  • Numbers(数字)
  • String(字符串)
  • bool (布尔类型)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)
  • Set (集合)

python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。 这和C++很不一样。

string 字符串类型

字符串类型的访问方式和C++有些许区别

字串列表的取值顺序有两种,从左到右和从右到左,从左到右的索引是从0开始的,从右到左的索引是从-1开始的。

python-string-slice.png

ss = "Hello World!"
print(ss[0])
print(ss[-1])
print(type(ss))
H
!
<class 'str'>

如果要实现从字符串中截取一段子串的话,可以使用[头下标:尾下标]来截取相应的字符串,其中下标是从0开始算起的,可以是正数或者负数,下标可以为空表示取到头或者尾。

s = "Hello World!"
s1 = s[0:5]
print(s1)
s2 = s[6:]
print(s2)
Hello
World!
s = "Hello World!"
s1 = s[-7:-1]
print(s1)
s2 = s[-7:]
print(s2)
 WorldWorld!

所以,头坐标都是相对于左边的,尾下标都是相对于右边的。

而且,这个[头坐标:尾座标] 其实是数学中的前闭后开区间,也就是截取的范围是[头坐标:尾坐标)

s = "Hello World!"
s1 = s[:-1]
print(s1)
s2 = s[:2]
print(s2)
Hello World
He

同理,头坐标也是可以进行省略的,如果省略的话,就表示从头开始截取。再次强调❗️头坐标是相对于左边的。
最左边都是最小值,最右边都是最大值,只不过负数的最大和最小与其绝对值正好相反。

Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:也就是这个样子的[头坐标:尾坐标:步长]

如果步长为负数,则表示为逆向输出。

s = "Hello World!"
s1 = s[0:5:2] # [0,5),步长为2,每间隔一个字符取一个进行输出
print(s1)
s2 = s[::-1] # 字符串反转
print(s2) 
Hlo
!dlroW olleH

🐖:Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串

print("hello\nworld")
print(r"hello\nworld")
hello
world
hello\nworld

🐖:python中的字符串不能被改变,这一点和c中的字符串是不同的

比如:向一个索引位置进行赋值操作,就会报错。

s = "Hello World!"
s[-1] = "d" # 字符串是不可变类型,不能直接修改字符串中的某个字符
---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)Cell In[4], line 21 s = "Hello World!"
----> 2 s[-1] = "d" # 字符串是不可变类型,不能直接修改字符串中的某个字符TypeError: 'str' object does not support item assignment
s = "Hello World!"
print(s)
s = 'haha'
print(s)
Hello World!
haha

list 列表类型

列表可以完成大多数集合类的数据结构实现,比如队列、栈等。

它支持字符、数字、字符串甚至可以包含列表(即嵌套)。

列表直接用中括号[]表示,内部元素用逗号,隔开。

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

对了,列表中和字符串类似,也可以使用[头坐标:尾坐标:步长]来截取。同时,+表示连接运算符,*是重复操作。

list1 = [1,2,'hello','world']
print(list1)print(list1[0::2])print(list1 * 2)print(list1 + [3,4,5])# print(list1 + 1) # 报错print(type(list1))
[1, 2, 'hello', 'world']
[1, 'hello']
[1, 2, 'hello', 'world', 1, 2, 'hello', 'world']
[1, 2, 'hello', 'world', 3, 4, 5]
<class 'list'>

列表竟然还可以直接用加号来拼接,这简直了!!!
🐖 需要注意的是,➕只能用来连接同种类型的数据,比如列表只能和列表连接,字符串只能和字符串连接,不能混着来。

# print('111'+1) # 报错

tuple 元组类型

元组类似于列表,但是 元组的元素不能修改 ,元组使用小括号(),列表使用方括号[]

tuple1 = (1,2,'hello','world',(4,5,6))
print(tuple1)
print(tuple1[4][0:2])
print(tuple1[4][0:2][0])
for e in tuple1:print(type(e))
(1, 2, 'hello', 'world', (4, 5, 6))
(4, 5)
4
<class 'int'>
<class 'int'>
<class 'str'>
<class 'str'>
<class 'tuple'>

总之,对于tuple来说,只需要记住,它和list的不同之处在于,tuple是不可变的,而list是可变的。

set 集合类型

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

基本功能是进行成员关系测试删除重复元素。重复的元素被自动去掉

set 可以进行集合的运算。 集合的运算包括:交集、并集、差集等。

可以使用大括号 { } 或者 set() 函数创建集合,

🐖:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

aset = {1,2,3,4,1,1,13,3,4,5,6,7,8,9,0}
print('aset: ',aset)
bset = {1,2,3,100}
print('aset - bset: ',aset - bset)
print('aset & bset: ',aset & bset)
print('aset | bset: ',aset | bset)cset = set()
print(type(cset))
ddic = {}
print(type(ddic))
aset:  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13}
aset - bset:  {0, 4, 5, 6, 7, 8, 9, 13}
aset & bset:  {1, 2, 3}
aset | bset:  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100, 13}
<class 'set'>
<class 'dict'>

dictionary 字典类型

列表是有序的对象集合,而字典是无序的对象集合。

字典当中的元素是通过键来存取的,而不是通过偏移存取。 类似于C++中的map。

字典用{} 来进行标识,字典由索引(key)和它对应的值value组成。

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name':'john','code':6734,'dept':'sales'}
print(dict['one'])
print(dict[2])
print(tinydict)
print(tinydict.keys())
print(tinydict.values())
print(type(tinydict))
This is one
This is two
{'name': 'john', 'code': 6734, 'dept': 'sales'}
dict_keys(['name', 'code', 'dept'])
dict_values(['john', 6734, 'sales'])
<class 'dict'>

bytes 字节类型

bytes类型是python3中的新类型,它的实例是一个0<= x <256的整数序列。

bytes 类型通常用于处理二进制数据,比如图像文件、音频文件、视频文件等等。在网络编程中,也经常使用 bytes 类型来传输二进制数据。

创建 bytes 对象的方式有多种,最常见的方式是使用 b 前缀,也可以通过调用 bytes() 构造器得到 bytes 对象。bytes()传入两个参数,第一个参数是字符串,第二个参数是编码方式,默认是utf-8。

x = b'hello'
print(type(x))
print(x)
print("bytes类型中的元素是整数值,而不是单个字符。")
print("x[0]: ",x[0]) # 104
<class 'bytes'>
b'hello'
bytes类型中的元素是整数值,而不是单个字符。
x[0]:  104

🐖:bytes 类型中的元素是整数值,因此在进行比较操作时需要使用相应的整数值

x = b"hello"
if x[0] == ord("h"):print("The first element is 'h'")
The first element is 'h'

总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vEkWAPMJ-1685179378731)(https://img.picgo.net/2023/05/27/20230527171656547abf21de4c3753.png)]

相关文章:

2-python的变量类型

内容提要 主要回顾了python中的变量类型&#xff0c;区分它们和c中的区别 python中的数字没有long python中的字符串不能被改变&#xff0c;也就是说不能对其内字符元素进行赋值操作 python中列表的数据类型与c访问方式有一定的区别列表的下标可以是负数&#xff0c;无论正负&…...

Python之并发编程一背景知识

一、开篇介绍 顾名思义&#xff0c;进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统&#xff0c;是操作系统最核心的概念&#xff0c;也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展…...

Redis分区

分区 Redis是单线程的&#xff0c;如何提高多核CPU的利用率&#xff1f; 可以在同一个服务器部署多个Redis的实例&#xff0c;并把他们当作不同的服务器来使用&#xff0c;在某些时候&#xff0c;无论如何一个服务器是不够的&#xff0c; 所以&#xff0c;如果你想使用多个CPU&…...

代码随想录算法训练营第56天 | 583、72

583. 两个字符串的删除操作 题目描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例1&#xff1a; 输入&#xff1a; w o r d 1 " s e a " , w o r d 2 " e a t …...

c++输入输出文件操作stream

系列文章目录 C IO库 文章目录 系列文章目录前言一、文件IO概述coutcin其他istream类方法 文件输入和输出内核格式化总结 前言 一、文件IO 概述 c程序把输入和输出看作字节流。输入时&#xff0c;程序从输入流中抽取字节&#xff1a;输出时&#xff0c;程序将字节流插入到输…...

【小呆的力学笔记】非线性有限元的初步认识【三】

文章目录 1.2.2 基于最小势能原理的线性有限元一般格式1.2.2.1 离散化1.2.2.2 位移插值1.2.2.3 单元应变1.2.2.4 单元应力1.2.2.5 单元刚度矩阵1.2.2.6 整体刚度矩阵1.2.2.7 处理约束1.2.2.8 求解节点载荷列阵1.2.2.9 求解位移列阵1.2.2.10 计算应力矩阵等 1.2.2 基于最小势能原…...

python计算闰年

这里说明一下&#xff1a;看到网上很多写python计算闰年的&#xff0c;有很多是不同。 有份省级期刊万年历计算公元1-10000年的闰年 算法如下&#xff1a;4000年停闰一次。区别其他算法&#xff0c;有些是3200年停闰一次。 def division(dividend, divisor) -> bool:"…...

聊聊如何使用Js写一个简单的二级联动和三级联动呢?

前言&#xff1a;咳咳哈&#xff0c;大佬说&#xff1a;"这不是有手就行了&#xff1f;"好吧&#xff0c;这里不做过多罗里吧嗦&#xff0c;真的不过多吹&#xff0c;我们在下面直接上代码上注释。 文章目录&#xff1a; 原Js二级联动实现原Js三级联动实现 一、二级…...

IPv4 和 IPv6 的特点、区别以及在互联网中的应用

在当今互联网时代&#xff0c;IP 地址是连接和通信的基础。IPv4&#xff08;Internet Protocol version 4&#xff09;和 IPv6&#xff08;Internet Protocol version 6&#xff09;是两种常见的 IP 地址版本。IPv4 是最早广泛使用的 IP 地址协议&#xff0c;而 IPv6 则是 IPv4…...

JavaScript处理移动web交互

touch对象和touchevent touch事件 touch对象 每一次发生touch事件时就会产生一个touch对象&#xff0c;类似事件处理函数中的事件对象。 <div class" "><button class"child" style"height: 400px; width: 400px">我是按钮</b…...

4年测试经验,一问三不知,过于离谱...

公司今年要招人&#xff0c;面倒是面了很多测试&#xff0c;但没有一个合适的。一开始想要的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;当然来了更好&#xff0c;提供的薪资在10-20k,来面试的人有很多&#xff0c;但平均水准真的是让人失望。 看简历时很多都写着3…...

Java 与查找算法(2)二分查找

一、二分查找 二分查找&#xff0c;也称折半查找&#xff0c;是一种常见的查找算法。它的思想是将有序数组分成两部分&#xff0c;取中间位置的值与目标值进行比较&#xff0c;如果相等则返回该位置&#xff0c;如果目标值小于中间值&#xff0c;则在左半部分继续查找&#xf…...

Java程序设计入门教程--原始类与包装类

包装类 Java语言是一个面向对象的语言&#xff0c;但是Java中的基本数据类型却是不面向对象的&#xff0c;这在实际使用时存在很多的不便。 为了解决这个不足&#xff0c;在设计类时为每个基本数据类型设计了一个对应的类进行代表&#xff0c;这样八个和基本数据类型对应的类统…...

pip安装python库速度慢、失败及超时报错解决办法

背景&#xff1a; 随着人工智能的不断兴起&#xff0c;python作为最接近人工智能的语言&#xff0c;变得越来越流行&#xff0c;人生苦短&#xff0c;python要学起来。之所以越来用的人喜欢学习python和研究Python&#xff0c;除了python本身便于学些、语法简短、面向对象等特点…...

向量数据库

向量数据库可以做哪些事情 存储和索引向量检索相似向量&#xff0c;还具有过滤功能自动将文档转变成向量&#xff0c;所以会自动化分词、向量化、索引等操作 目前存在的向量数据库&#xff1a; 名称github开源协议chromahttps://github.com/chroma-core/chromaApache 2.0Mil…...

leetcode 11.盛最多水的容器

题目描述 跳转到leetocde题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff…...

都说00后已经躺平了,但是有一说一,该卷的还是卷啊。

这不&#xff0c;三月份春招我们公司来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条件不太好&…...

牛客网刷题学习SQL(二)

SQL22 统计每个学校的答过题的用户的平均答题数 描述 运营想要了解每个学校答过题的用户平均答题数量情况&#xff0c;请你取出数据。 用户信息表 user_profile&#xff0c;其中device_id指终端编号&#xff08;认为每个用户有唯一的一个终端&#xff09;&#xff0c;gender指…...

深蓝学院 C++笔记 先导篇章 - 绪论

一、介绍-老师寄语 为什么选择C&#xff1f; 高性能解决问题 二、C推荐书目 1. 基础 《C Primer》&#xff0c;Stanley B. Lippman 等著&#xff0c;王刚、杨巨峰等译 2. 进阶 《Effective C》&#xff0c;Scott Meyers 著&#xff0c;侯捷译。 《More Effective C》&am…...

R7-19 天梯赛团队总分

“天梯赛”的竞赛题目一共有 15 道&#xff0c;分为 3 个梯级&#xff1a; 基础级设 8 道题&#xff0c;其中 5 分、10 分、15 分、20 分的题各 2 道&#xff0c;满分为 100 分&#xff1b;题目编号相应为L1-X&#xff0c;X取1,2,3,4,5,6,7,8&#xff0c;分别表示基础级的8道题…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...