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)
 World
 World!

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

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

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 2
      1 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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CX__CS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值