python 数据结构 - 字符串

字符串是 Python 中最常用的数据类型。我们可以使用单引号 ( ‘‘ ) 或双引号 ( " " ) 来创建字符串。

在python中,创建变量不需要指定类型,你在创建变量赋值时,python解释器会自动推断变量的数据类型

 1 >>> s = ‘abcde‘
 2 >>> type(s)
 3 <class ‘str‘>          #这里把多种数据类型的值赋值给s,python都能自动识别
 4 >>> s = 123
 5 >>> type(s)
 6 <class ‘int‘>
 7 >>> s = [1,2,‘a‘,3]
 8 >>> type(s)
 9 <class ‘list‘>
10 >>> s = {‘name‘:‘root‘}
11 >>> type(s)
12 <class ‘dict‘>
13 >>> s = {1,3,‘a‘,‘abd‘}
14 >>> type(s)
15 <class ‘set‘>
16 >>> 

在python中,不支持单字符类型,python中的单字符也是作为字符串来处理

在python中,因为字符串是一个有序的序列,所以支持索引、切片等操作(用切片可以获取子串)

 1 >>> s = ‘a‘
 2 >>> type(s)
 3 <class ‘str‘>       #python中单字符也是字符串
 4 >>> s = ‘abcde‘
 5 >>> s[0:3]          #字符串可以切片,获取子串
 6 ‘abc‘
 7 >>> s[1]        #字符串可以索引
 8 ‘b‘
 9 >>> ‘bc‘ in s     #字符串支持 in 、not in 操作
10 True
11 >>> for i in s:    #字符串可以循环
12     print(i)
13
14
15 a
16 b
17 c
18 d
19 e
20 >>> 

在python中,为了防止每次创建基础变量,如字符串、数字等,都要申请开辟内存,所以python专门有个内存池,存放有常用的数字、字符串等。所以在python中,数字、字符串等数据类型是‘不可更改的‘,

重新赋值(更改)就相当于把变量名指向了内存中的另一块内存。

 1 >>> s = ‘abc def wsx asd hello‘
 2 >>> id(s)
 3 3063291967504
 4 >>> s1 = s.replace(‘ def‘,‘xxx‘)
 5 >>> s
 6 ‘abc def wsx asd hello‘
 7 >>> s1
 8 ‘abcxxx wsx asd hello‘          #字符串本身不能更改,重新赋值(更改)就相当于指向另一块内存
 9 >>> id(s1)
10 3063291967720
11 >>> i = 10
12 >>> id(i)
13 1554097536
14 >>> i = 20        #数字不能重新赋值(更改),重新更改就相当于指向令一块内存
15 >>> id(i)
16 1554097856
17 >>> 

所以在python中,更新字符串,就必须重新开辟内存空间

1 >>> s = ‘hello Tom‘
2 >>> s1 = s[:6]+‘Lucy‘      #更新字符串,不推荐在拼接字符串时用‘+‘,‘*‘表示重复输出字符串,eg:  ‘abc‘*3  -->  ‘abcabcabc‘
3 >>> s1
4 ‘hello Lucy‘
5 >>> id(s)
6 3063306041456
7 >>> id(s1)
8 3063306041392
9 >>> 

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:

\(在行尾时) 续行符
\\ 反斜杠符号
\‘ 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

注意,在字符串前面加 r/R 表示打印原始字符串。即所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。

字符串的格式化:

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

 1 >>> s = ‘you are my %s I am %s year old‘ %(‘sunshine‘,22)
 2 >>> s
 3 ‘you are my sunshine I am 22 year old‘
 4 >>> s1 = ‘you are my{} I am {} year old‘ .format(‘sunshine‘,22)
 5 >>> s1
 6 ‘you are mysunshine I am 22 year old‘
 7 >>> s2 = ‘you are my{1} I am {0} year old‘ .format(22,‘sunshine‘)
 8 >>> s2
 9 ‘you are mysunshine I am 22 year old‘
10 >>> s3 = ‘you are my {what} I am {age} year old‘ .format(age=22,what=‘sunshine‘)
11 >>> s3
12 ‘you are my sunshine I am 22 year old‘
13 >>> 

python中的三引号(‘‘‘ ‘‘‘) 或 (""" """):

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)。可以用来定义字符串(一般是有多行或有特殊符号)、注释代码等

1 >>> s = ‘‘‘ abc
2         asd
3         \4         \n
5         ‘‘‘
6 >>> s
7 ‘ abc8   asd9   \\10  \n11  ‘
12 >>> 

字符串常用方法:

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3
 4 ‘‘‘字符串常用方法‘‘‘
 5 s = ‘abcDEF‘
 6
 7 s.capitalize()
 8 ‘‘‘返回字符串s的首字母大写的副本‘‘‘
 9 s.find(sub, start=None, end=None)
10 ‘‘‘返回字符串在指定区间首次出现位置的索引,不指定区间表示整个字符串,若不存在,则返回-1‘‘‘
11 s.islower()
12 ‘‘‘判断字符串里面的字符是否全是小写‘‘‘
13 s.isupper()
14 ‘‘‘判断字符串里面的字符是否全是大写‘‘‘
15 s.lower()
16 ‘‘‘返回将字符串的所有字符转换为小写后的副本‘‘‘
17 s.upper()
18 ‘‘‘返回将字符串的所有字符转换为大写后的副本‘‘‘
19 s.replace(old, new, count=None)
20 ‘‘‘返回将s中的子串 old 全更换为 new 后的副本,若指定了count,则只是替换一次‘‘‘
21 s.split(sep=None, maxsplit=_1)
22 ‘‘‘将被seq(默认空格)分隔的子串以列表形式返回,若seq="a",则是被"a"分隔,eg:s.split(‘a‘) ‘‘‘
23 s.strip(chars=None)
24 ‘‘‘返回删除字符串两端的 chars 后的副本,默认chars=None表示删除空格 eg:s.strip(‘a‘)删除s两端的"a" ‘‘‘
25 s.swapcase()
26 ‘‘‘返回将字符串中小写转换为大写,大写转换为小写后的副本‘‘‘
27 s.startswith(x)
28 ‘‘‘判断字符串s是否是以x开头‘‘‘
29 s.endswith(x)
30 ‘‘‘判断字符串s是否是以x结尾‘‘‘
31 s.partition(x)
32 ‘‘‘将字符串s按第一次遇到的x分为三部分 (‘x前‘,‘x‘,‘x后‘) ,并以元祖形式返回‘‘‘
33 s.count(sub, start=None, end=None)
34 ‘‘‘在指定区间内seq出现的次数,区间是[s,e)‘‘‘

未完待续。。。

时间: 2024-12-14 21:09:45

python 数据结构 - 字符串的相关文章

python数据结构-字符串

字符串:" " ''' '''' '有序可索引 sql="select" sql[4]=c可迭代 lst=list(sql) =["s",''e","l","e","c","t"]字符串连接:"连接符".join(元素是字符串类型的可迭代对象)------>返回新的字符串字符串连接:"str1"+"st

Python数据结构

1. 元组(tuple) 元组由不同的元素组成,每个元素可以储存不同类型的数据,如字符串.数字甚至元组.元组是写保护的,即元组创建后不能再做任何修改操作. 1.1 元组的创建 Tuple(元组)由一系列元素组成,所有元素被包含在一对圆括号中.创建元组时可以不指定元素个数,但一旦创建后就不能修改长度 元组的创建格式如下:tuple_name = (元素1,元素2,-) 如果创建空元组,只需要一对空的圆括号:tuple_name = () 如果创建的元组只包含一个元素,应在元素后面加上逗号,以区分元

Python数据结构——散列表

散列表的实现常常叫做散列(hashing).散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的.需要元素间任何排序信息的操作将不会得到有效的支持. 散列表是普通数组概念的推广.如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术. 当实际存储的关键字比可能的关键字总数较小时,采用散列表就比较直接寻址更为有效.在散列表中,不是直接把关键字用作数组下标,而是根据关键字计算出下标,这种 关键字与下标之间的映射就叫做散列函数. 1.散列函数

Python学习日志之Python数据结构初识

Python数据结构初识: 一.Python数据结构概述 1.何为数据结构 在程序中,同样的一个或几个数据组织起来,可以有不同的组织方式,也就是不同的存储方式,不同的组织方式就是不同的结构,我们把这些数据组织在一起的结构就叫做数据结构 例如: 有一串字符串:"abc",我们将它重新组织一下,比如通过list()函数将"abc"变成["a","b","c"],那么这个时候数据发生了重组,重组之后的结构就发生了

Python数据结构与算法--List和Dictionaries

Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还是牺牲了不常用的操作的性能来成全常用功能. 本文地址:http://www.cnblogs.com/archimedes/p/python-datastruct-algorithm-list-dictionary.html,转载请注明源地址. 设计者有很多的选择,使他们实现list的数据结构.这些选

python数据结构之 列表和元组

python数据结构之 列表和元组 序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始).典型的序列包括列表.字符串和元组.其中,列表是可变的(可以进行修改),而元组和字符串是不可变的(一旦创建了就是固定的).序列中包含6种内建的序列,包括列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 列表的声明: mylist = [] 2.列表的操作: (1) 序列的分片: 用法:mylist[startIndex:endIndex:step] exam: myli

Python数据结构与算法--算法分析

在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义域是输入数据的长度,值域通常是执行步骤数量(时间复杂度)或者存储器位置数量(空间复杂度).算法分析是计算复杂度理论的重要组成部分. 本文地址:http://www.cnblogs.com/archimedes/p/python-datastruct-algorithm-analysis.html,转

Python数据结构:列表、元组和字典

在Python中有三种内建的数据结构——列表list.元组tuple和字典dict 列表中的项目包括在方括号中,项目之间用逗号分割 元组和列表十分类似,只不过元组和字符串一样是不可变的 即你不能修改元组.元组通过圆括号中用逗号分割的项目定义. 元组最通常的用法是用在打印语句中 age = 22 name = 'Swaroop' print '%s is %d years old' % (name, age) print 'Why is %s playing with that python?'

Python学习教程(Python学习路线+Python学习视频):Python数据结构

Python学习教程(Python学习路线+Python学习视频):Python数据结构   数据结构引言:   数据结构是组织数据的方式,以便能够更好的存储和获取数据.数据结构定义数据之间的关系和对这些数据的操作方式.数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方式. 在这篇文章中,你将了解到多种数据结构以及这些数据结构在Python中实现的方式.    抽象数据类型和数据结构 数据结构是抽象数据类型(ADT)的实现,通常,是通过编程语言提供的