python光速入门教程_3 不可变序列

本篇介绍不可变序列,即字符串和元组。

在序列类型的学习中,字符串是最基础的,学好字符串,理解序列会更加容易,对于列表,元组等的学习就会更加迅速。

字符串的创建

在python中,用单引号或者双引号来定义一个字符串变量,例如:

e_string = 'hello, world!'

特别地,当定义的字符串本身含有单引号时,只能用双引号来定义,同理,但字符串含有双引号就要用单引号来定义。而当字符串既有单引号,又有双引号,或者字符串是多行时,可用三个双引号来定义。

second_string = "it's good."

third_string = 'you said, "that is good".'
fourth_string = """it's good. 

you said, 

"that is good"."""
print(e_string, second_string, third_string)

print(fourth_string)

可以得到以下结果:

字符串的拼接

字符串可以用算数运算符(加法运算符和乘法运算符)进行拼接,例如:

1.加法运算符

hello_string = 'hello, '

world_string = 'world! '

hello_world_string = hello_string + world_string

2.乘法运算符

tripe_hello = hello_world_string * 3

这时候可能就会有好奇宝宝要问了,减法运算符可以用吗?在这里先传授大家学习的重要方法:不仅要多动脑,多提问,更重要的是多动手。吾尝终日而思矣,不如须臾之所学也。自己在pycharm中试一下,就会知道答案。

答案是不能。

字符串的增删改查

说到序列,我们自然能够想到四个操作——增,删,改,查。

1.增删改

实际上来说,既然字符串是不可变序列,那么不能进行增,删,改的操作,为什么这里可以呢?实际上,是把原来的字符串删除了,然后再重新定义了一个字符串,可通过以下程序进行测试:

my_string = 'hello, '

your_string = 'world'

print(id(my_string))

my_string = my_string + your_string

print(id(my_string))

其中,id()函数用于指出对象存储的位置,打印后可以明显看到id已经发生了改变。

所以说,对于不可变字符串而言,增,删,改其实都意味着:先把原来的变量删除,然后再定义一个新的变量。如果只是单纯地想要删除一个字符串,释放内存,可通过以下操作:

# region 删除字符串
to_del_string = 'hello'
del to_del_string
# endregion

2.查

接下来说说查,查找操作分为很多种,介绍如下:

1.查找某个位置上的元素

既然是序列,那么排序的逻辑就要搞清楚,通常我们称之为“索引”。在python中,有两种方式来表示索引,第一种是从前往后,称为“正向索引”,这种方式将第一个位置上的索引记为0,第2个位置上的索引记为1,依次类推。第二种称为“方向索引”,这种方式将倒数第一个的索引记为-1,倒数第二个记为-2,依此类推。

特别地,对于索引还能实现“切片操作”,即取出序列中的一部分元素。例如string[2;5],表示将string中的第2,3,4个元素取出,注意“切片“操作中,

1)索引可以用正向也可以用反向,而且也可以混用(但是不建议,不论写python还是其他语言,尽量简单易懂)

2)“切片”包含左索引但不包含右索引。

下面给出一个例子:

# region 测试索引
test_string = 'hello, world!'
# 正向索引从0开始
print(test_string[0], test_string[1])
# 负向索引从-1开始
print(test_string[-1], test_string[-2])
# 正向切片操作
print(test_string[2:5])
# 负向切片操作
print(test_string[-5: -2])
# 混用正向和负向,但不建议
print(test_string[-5:10])
# endregion

得到结果如下:

2.查找某个元素在不在序列中

通常使用in或者not in来判断一个元素是否出现在序列中,通常是在一个判断语句中这么做,关于判断语句可在以下链接中查看。

给出一个demo:

# region 查找元素在不在字符串中
test_string = 'hello, world!'
if 'h' in test_string:
    print('it is in string!')
if 'a' not in test_string:
    print('it is not in string!')

# 查看某个元素在字符串中出现了几次
l_num = test_string.count('l')
print(l_num)
# endregion

运行结果如下:

 

3.查找某个元素出现的位置

对于字符串而言,可以通过find()或index()方法找出某个元素首次出现的位置,但是对于多次出现的元素也只能找到首次出现位置。因此,如果想要拥有更加强大的查找功能,就要使用正则表达式,这个将在python高级教程中提及。

在实际应用中,建议先判断元素是否在字符串中,再进行位置的查找。因为如果元素并未在字符串中而直接查找,将会导致程序报错。

给出一个demo:

# region查找某个元素在字符串中出现的位置
test_string = 'hello, world!'
l_index = test_string.find('l')
print(l_index)
print(test_string.index('l'))
# endregion

运行后将会看到,l在“hello, world!“中出现的位置为2。

学完字符串后,元组的学习就简单多了。

元组的创建

在python中,可通过如下命令创建一个元组:

a_tuple = (1, 2, 3, 4)

特别地,当元组只包含一个数字时,必须要加上逗号,否则括号将被认为时一个运算符(即这里的括号被认为是:先乘除,后加减,括号优先),给出一个demo:

# region 创建只有一个数字的元组
a_number_tuple = (1,)
a_number = (1)
print(type(a_number), type(a_number_tuple))
# endregion

可以明显看到,a_number的类型为数字而不是元组。

元组的拼接

与字符串类似,元组也可以用加法运算符和乘法运算符进行拼接。

元组的增删改查

元组的增删改与字符串一致,这里注意一下,在删除操作中用到的 del()其实是删除了整个变量,而非删除了某个元素,由于字符串和元组是不可变序列,所以是不可能实现“删除某个元素”这种操作的。

同样地,元组的索引、“切片”跟字符串一样,不仅如此,后面讲到的列表也是相同的。

元组也可以通过in以及not in 判断元素是否存在于元组中。

而且,元组也是通过index()方法来查找某个元素首次出现的位置。

怎么样,这些知识是不是和字符串几乎一模一样。

下面给出一个demo:

# region 测试元组
test_tuple = (1, 'hello', 'world')
print(test_tuple[1])
if 1 in test_tuple:
    print('1 is in tuple!')
if 'my' not in test_tuple:
    print('string "my" is not in tuple!')

hello_index = test_tuple.index('hello')
print(hello_index)
# endregion

可以看到结果为

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值