python序列数据类型_Python小白基础(2)- 数据类型1(Number、序列)

pyhon中,有一种东西叫做容器,当然不仅仅是python,几乎所有的语言都有容器一说。

那么,什么又是容器呢?

在小白基础(1)中,我有提及过 变量 (详情:juejin.im/post/684490…),这里说的变量,实际上就属于容器的一种,用来存储特定的数据。

在python中,除了变量,还有其他一些比较常用的容器,这些容器,有对应的数据类型,请听小码农细细道来。

Python有六个标准的数据类型:

Numbers(数字)

String(字符串)

List(列表)

Tuple(元组)

Set(集合)

Dictionary(字典)

开始之前,先提两个BIF (Built-in Functions,内置函数):

一个是type(obj),一个是isinstance(obj,type)。

type(obj),这个函数的作用,就是判断数据类型用的。obj表示要判断的对象。看下边的代码:

# 数字类型

>>> a, b, c, d = 20, 5.5, True, 4+3j

>>> print(type(a), type(b), type(c), type(d))

# 输出结果:

# 其他类型

>>> e, f, g, h, i,j = "小码农", [1,2,3], (4,5,6),{'a','b','c'}, {'d':1, 'e':'2', 'f':[1,2]}

>>> print(type(e), type(f), type(g), type(h), type(i))

# 输出结果:

复制代码

从代码中也可以看出,根据type(obj)函数得出的数据类型,就是我们这片文章要介绍的东西啦。这段代码看不明白暂时没关系,看完这片文章再回头看,估计就会明白了。

至于isinstance(obj,type),功能类似,不过接收2个参数,第一个参数表示要判断的对象,第二个参数接收判断的类型。这个函数用来判断某个对象是否是指定类型的子类,是则返回True,否则返回False。又举个栗子:

>>> a = 123

>>> isinstance(a, int)

# 输出结果:

True

>>> isinstance(a,str)

# 输出结果:

False

复制代码

Number(数字)

Python3 支持 int、float、bool、complex(复数)。

在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。童鞋们当概念记一下就好。

int(整型)、float(浮点型)

emm,直白点说,就是整数、小数。在python中,是直接以数字形式写的。

>>> a = 1

>>> b = 1.78

复制代码

注意哦,这里的赋值,1和1.78是赤赤裸裸滴,没有引号哦,如果说这样

>>> a = "1"

>>> b = '1.78'

复制代码

程序会认为你给a和b两个变量是用字符串赋值的而不是数字。

bool(布尔值)

布尔值,其实就是特殊的数字,0是布尔值假False,1是布尔值真True

>>> bool(1)

True

>>> bool(0)

False

复制代码

在这里,其实善于动手的童鞋会发现,只要数字不是0 ,那么反回的布尔值都是True。emm...这里当个概念眼熟一下就好了,后面学习用多了,也就理解了。

复数(complex)

说实话就是那种类似1+2j,1的部分是实部,2j的部分叫做虚部,(原谅我这玩意是干嘛的我也不知道,小学数学是体育老师教的...)这部分自动跳过了~

另外,python中的容器也可以分为 有序容器 和 无序容器(个人理解,有错还望指出)。

有序容器,在我的理解,就是说这个容器内存储的数据是按顺序存放的,我们可以通过下标的方法访问到容器内的制定数据。

反之,无序容器中存储的数据就不按套路出牌了,也就是没办法用下标的方式访问数据。

有序容器

有序容器,在python中也可以叫做序列,序列包括字符串(String)、列表(List)、元组(Tuple)。也就是说,这三种数据,是可以通过下标的方式直接访问存储在容器中的数据的,举个栗子:

# 字符串

>>> str1 = 'Hello World!'

# 列表

>>> list1 = [1,2,3,4]

# 元组

>>> tuple1 = (1,2,3)

# 打印输出

>>> print(str1[0],list1[1],tuple1[2])

# 输出结果:

H 2 3

复制代码

从上面的例子,展示了字符串、列表和元组及其定义方法(下面会逐一进行介绍)。他们的访问方式就是直接以下标方式访问,如str1[0],表示Hello World!的第一个元素也就是H,对应list1[1]获取列表的第二个元素,tuple1[2]获取元组的第三个元素。

此处插播一个知识点:

基本上大多数编程语言,其下标都是规定从0开始的,而不是我们认知的从1开始,接着才是1,2,3,4,5……。因此字符串str1[0]表示的是第一个元素,也就是Hello World!中的H。列表和元组同理。

还有个特殊的,就是负数。负数下标,表示的是从序列末端开始倒数,如-1表示最后一个元素,-2表示倒数第二个元素,以此类推。

String(字符串)

字符串,其实就是用引号包裹起来的东西,比如说

'abcd'

"efg"

'''ABCD'''

"""EFG"""

复制代码

这几个,都叫做字符串,字符串在编程中是灰常常用的,因此有很多字符串相关的BIF,童鞋们可以自行动手,搜索引擎是个好东西。也可以参阅www.w3cschool.cn/python/pyth…

List(列表)

列表,就是存储数据的一串东西,大致可以这么理解吧。里边呢,可以放字符串,数字、元组,当然也可以继续放一个列表(类似列表里放列表,这种在同类型的东西里边放个同类型的东西(暂且这么理解),这种方式有个特殊的名字,叫做嵌套)。

List(列表) 这玩意应该是 Python 中使用最频繁的数据类型了吧。

# 定义一个空列表

>>> list1 = []

# 定义一个装很多东西的列表

>>> list2 = [1,'Hello world!',(1,2,3),[4,5,6]]

复制代码

没看错,万物皆可盘~

另外,list(列表)是可以任君修改的哟,比如这样:

>>> list1 = [1,2,3,4]

>>> list1[0] = 100

>>> print(list1)

# 输出结果:

[100, 2, 3, 4]

复制代码

正如所见,代码中将list1的第一个元素从1修改为了100,然后新的list1的值也对应的变更了。而诸如字符串、元组、集合、字典可没有这种骚操作,不信你自个试试。

Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号() 里,元素之间用英文逗(,)号隔开。

不过需要注意的是,当元组中只有一个元素的时候,逗号依然需要保留:

# 定义一个空元组

tuple1 = ()

# 定义一个只有一个元素的元组,逗号需要保留

tuple2 = (1,)

复制代码

注意事项

String(字符串)、List(列表) 和 Tuple(元组) 都属于 Sequence(序列)。

与字符串一样,元组的元素不能修改。

元组也可以被索引和切片,方法一样。

注意构造包含 0 或 1 个元素的元组的特殊语法规则。

元组也可以使用+操作符进行拼接。

引申

有童鞋会问了,上面提到过的切片,拼接又是什么??这部分,将对这两个知识点进行说明。

在此之前,我们初始化一下,分别用来举例。两个例子不在重复初始化定义。

# 定义字符串

str1 = 'Hello'

str2 = 'World'

# 定义元组

tuple1 = (1,2,3)

tuple2 = (4,5,6)

# 定义列表

list1 = [1,2,3]

list2 = [4,5,6]

复制代码切片

顾名思义,就是把某些东西切啊切成一片一片的。那么在python中,我们该如何来理解呢?在说明之前,再提一次,编程的序号是从0开始的,重点,要考! 那么,还是栗子说话:

>>> str1[0:1]

# 结果输出:

'H'

>>> str1[:1]

# 结果输出:

'H'

>>> str1[2:]

# 结果输出:

'llo'

>>> str1[:]

# 结果输出

'Hello'

复制代码

根据输出结果,细心的童鞋也可以看出来了。重点在于这个冒号(:)。这里列表、元组和字符串的切片操作都是一样的,这里拿字符串做例子,其他的童鞋们可以自行尝试。

结合代码,切片有以下的规则

[0:1]

冒号前的数字表示要切片的对象的初始下标,冒号右边的数字表示要切片的截止下标(但是不包含此下标对应的元素)。之前定义的str1 = 'Hello',从下标为0的元素开始,到下标为1截止,但是不包含下标为1的元素,因此就返回了字符串的第一个元素,也就是H。

[:1]

当冒号左边的数字省略不写时,表示默认从下标为0开始取值,到下标为1的元素位置,但不包含下标为1的元素,因此,str1[:1]返回的也是H。

[2:]

有同鞋问了,冒号左边可以省略,我冒号右边能不能省略?答案是,能。当省略冒号右边的数字,表示从左边指定的下标开始,截取到对象最后的所有元素。因此,str1[2:]表示的是从下标为2的元素开始,直到末尾,所以返回的结果是llo。

[:]

无独有偶,既然前可以省略,后可以省略,那我可不可以前后都省略?emm,答案是YES。当冒号前后数字都省略不填,表示获取对象所有的元素。也就是说,str1和str1[:]是等价的。因此str1[:]返回了整个字符串Hello。

拼接

都说破镜不能重圆,Python比较追求完美,所以呢,在Python中,某些东西,是可以重圆的,这就是我们接下来要说的拼接。

废话不多说,上栗子(初始化代码在前边,这不再重新初始化):

str1 + str2

# 结果输出

'Hello World'

tuple1 + tuple2

# 结果输出:

(1,2,3,4,5,6)

list1 + list2

# 结果输出:

[1,2,3,4,5,6]

复制代码

好嘛,显而易见,拼接,拼起来的意思。不过要注意的是,这个拼接符(+)左右两边的对象类型,要保持一致,也就是说,只能字符串和字符串拼接,列表和列表拼接,元组和元组拼接。达尔文的进化论也说啦,物种之间,是有生物隔离的,不是什么猪狗马牛都可以随便的凑一对你说是不是~

小结

这片文章主要讲解了数字相关和Python中的序列相关的内容,包括了字符串、列表和元组,及其相关的一些方法,如切片和拼接。

看再多,不如动手敲一下代码,验证一下自己所看所学。子曰:读万卷书,不如行万里路。下一篇,会写一些关于非序列的数据类型。

以上内容是本人结合网络和个人理解,如有错误,还请指出。共勉~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值