python核心数据类型

一、数字

待补充 136

二、字符串

从严格意义上来说,字符串是由单字符的字符串所组成的序列,其他更一般的序列类型还包括列表和元组。

2.1 序列操作

我们可以通过内置的len函数验证序列的长度,并通过索引操作得到其各个元素:

s='spam'
print(len(s))
# 4
print(s[0])
# 's'
print(s[-1])
# 'm'

除了简单地从位置进行索引,序列也支持切片(slice)操作,这是一种一步就能够提取整个分片的方法,例如:

print(s[1:3])
#'pa'

切片的一般形式为x[i:j],表示“取出在x中偏移量为i,直到但不包含偏移量为j的内容”。结果就是返回一个新的对象。

在切片操作中,左边界默认为0,右边界默认为整个序列的长度,下面介绍了一些常用的变体:

print(s[1:])
# 'pam'
print(s[:3])
# 'spa'
print(s[:-1])
# 'spa'
print(s[:])
# 'spam'

作为一个序列,字符串也支持使用加号进行拼接(将两个字符串合并为一个新的字符串),或者重复(通过再重复一次创建一个新的字符串):

print(s+'xyz')
# 'spamxyz'
print(s*8)
# 'spamspamspamspamspamspamspamspam'
2.2 不可变性

可以看到,在之前的例子中,没有对原始的字符串进行改变,每个字符串操作都被定义为生成新的字符串作为执行结果,这是因为字符串在python中具有不可变性(即在创建后不能原位置——inplace改变)。换句话说,我们永远不能覆盖不可变对象的值。例如,我们不能通过对某一位置进行赋值而改变字符串,但是我们总可以建立一个新的字符串并以同一个变量名对其赋值(Python在运行过程中会清理旧的对象):

s[0]='z'
# TypeError: 'str' object does not support item assignment
s='z'+s[1:]
print(s)
# 'zpam'

python中的每个对象都可以归类为不可变的或者可变的。其中,数字、字符串和元组是不可变的;列表、字典和集合是可变的。

严格来说,我们可以在原位置改变基于文本的数据。这需要我们将它扩展成一个由独立字符构成的列表,然后不加入其他字符把它重新拼接起来。或者使用python2.6以及3.0以后新增的bytearray类型:

s='shrubbery'
l=list(s)
print(l)
# ['s', 'h', 'r', 'u', 'b', 'b', 'e', 'r', 'y']

l[1]='c'
print(''.join(l))
# 'scrubbery'

在这里插入图片描述

2.3 特定类型的方法

待补充 140

三、列表

列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小,与字符串不同,列表是可变的,通过对对应偏移量进行赋值可以定位地对列表进行修改。

3.1 序列操作

我们能够对列表进行索引、切片等操作:
在这里插入图片描述

3.2 特定类型的操作

python列表没有固定类型的约数,上面的列表中就包含了三种不同类型的对象(一个整数、一个字符串和一个浮点数)。此外,列表没有固定大小,也就是说能够按照需要增加或减小列表大小,用来响应其特定的操作:
在这里插入图片描述

3.3 边界检查

待补充 148

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值