(一)Python入门-2编程基本概念:15字符串-str()-使用[]提取字符串-replace()替换生成新字符串-内存分析

一:str()实现数字转型字符串

  str()可以帮助我们将其他数据类型转换为字符串。例如: str(5.20) ==> ‘5.20’ str(3.14e2)==>’314.0’ str(True) ==> ‘True’

 1 >>> int('23.34')
 2       
 3 Traceback (most recent call last):
 4   File "<pyshell#35>", line 1, in <module>
 5     int('23.34')
 6 ValueError: invalid literal for int() with base 10: '23.34'
 7 >>> int('23')
 8       
 9 23
10 >>> float('23.34')
11       
12 23.34
13 >>> str(5.20)
14       
15 '5.2'
16 >>> str(3.14e2)
17       
18 '314.0'
19 >>> str(True)
20       

  当我们调用 print()函数时,解释器自动调用了 str()将非字符串的对象转成了字符串。在面向对象章节中详细说明这部分内容

二:使用[]提取字符

  字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量, 可以提取该位置的单个字符。

  正向搜索:

    最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1 为止。

  反向搜索:

    最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str) 为止。

  【操作】使用[]提取字符串中的字符

 1 >>> a = 'abcdefghijklmnopqrstuvwxyz'
 2       
 3 >>> a
 4       
 5 'abcdefghijklmnopqrstuvwxyz'
 6 >>> a[0]
 7       
 8 'a'
 9 >>> a[2]
10       
11 'c'
12 >>> a[25]
13       
14 'z'
15 >>> a[26]
16       
17 Traceback (most recent call last):
18   File "<pyshell#46>", line 1, in <module>
19     a[26]
20 IndexError: string index out of range
21 >>> a[-1]
22       
23 'z'
24 >>> a[-3]
25       
26 'x'
27 >>> a[-26]
28       
29 'a'
30 >>> a[-27]
31       
32 Traceback (most recent call last):
33   File "<pyshell#50>", line 1, in <module>
34     a[-27]
35 IndexError: string index out of range

三:replace()实现字符串替换

  字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变 字符串。我们尝试改变字符串中某个字符,发现报错了:

 1 >>> a = 'abcdefghijklmnopqrstuvwxyz'
 2       
 3 >>> a
 4       
 5 'abcdefghijklmnopqrstuvwxyz'
 6 >>> a[3] = ''
 7       
 8 Traceback (most recent call last):
 9   File "<pyshell#54>", line 1, in <module>
10     a[3] = ''
11 TypeError: 'str' object does not support item assignment

  字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符串来实现。

 1 >>> a = 'abcdefghijklmnopqrstuvwxyz'
 2       
 3 >>> a
 4       
 5 'abcdefghijklmnopqrstuvwxyz'
 6 >>> a = a.replace('c','')
 7       
 8 >>> a
 9       
10 'ab高defghijklmnopqrstuvwxyz'

  整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的 字符串。 内存图如下:

 

posted on 2019-05-11 23:25  JACK#zhang  阅读(532)  评论(0编辑  收藏  举报