一.元组:戴上枷锁的数组
元组不同于列表,可以任意修改列表元素,插入或删除元素,其是不可改变的,更别谈排序操作了.
1.创建和访问元组
元组大部分使用的是小括号
tuple1=(1,2,3)
访问方式参照列表,如tuple1[1],tuple1[5:],tuple1[:5](不包括索引值为5的元素)
分片方式复制元组:tuple2=tuple1[:]
试图修改元素:tuple[1] = 1(错误)
temp = (1)
type(temp)
<class 'int'> #返回temp的类型为int
temp = 1,2,3
type(temp)
<class 'tuple'> temp类型为元组类型
通过上述对比,可知逗号才是元组的关键,小括号只是补充
若想创建一个空元组,则直接使用小括号,如temp = ()
若元组中只有一个元素,则在其后边加上逗号,如
temp1 = (1,)
temp2 = 1,
如下例所示,可见逗号的重要性
>>> 4*(8)
32
>>>4*(8,)
(8,8,8,8)
2.更新和删除元组
元组本来是不可改变的,但可以通过拷贝方式解决
temp = (1,2,3)
temp = temp[:2] + (4,) + temp[2:]
temp
(1,2,4,3)
上例通过分片方式将元组拆分为两部分,再使用连接操作符合并成新的元组,最后将原来变量名指向连接后的新元组,达到更新数组目的,注意逗号和小括号都是必需的。
同理可通过temp = temp[:2] + temp[3:]间接删除元素
del temp可显式删除一个元组,但del一般使用不到,因为Python会自动回收不用的元组
总结:拼接('+'),重复('*'),关系,逻辑,成员关系(in和not in)操作符均可直接用在元组中,用法类比列表.
二:字符串
1.创建和访问字符串
str1 = 'I love you'
str1[:6]
'I love' #分片应用
Python中没有字符,字符只是长度为1的字符串
访问字符串的字符时,只需通过索引进行访问
>>>str1[5]
'e'
字符串和元组一样,不可更改,修改方法同元组
str1[:6] + 'and' + str1[6:]
该种修改方法并不是真正意义上改变原始字符串,只是将变量指向新的字符串,原字符串还存在,但原字符串一旦没有变量引用,就会被回收.
比较,逻辑,成员关系操作符仍可用于字符串中,用法同列表和元组.
2.字符串方法:
待补充
常用方法示例
1)str1.casefold() #所有字符小写
2)count(sub[,start[,end]]) #[]表示可选参数,查找sub子字符串出现的次数,
#start和end表示查找范围
3)find(sub[,start[,end]])
#查找子字符串在该字符串的位置,返回第一个字符的索引值,若不存在,返回-1
4)index(sub[,start[,end]])
#同上,查找子字符串在该字符串的位置,返回第一个字符的索引值,但不存在时抛出异常
5)join(sub)
#用于连接字符串,以字符串为间隔,插入到sub字符串中的所有字符之间,如
>>>'x'.join('Test')
'Txexsxt'
使用join的原因:用'+'拼接字符串会引起内存复制以及垃圾回收,效率低,所以对于大量字符串的拼接来说,通常如下操作
>>>''.join(['I','love','you'])
'I love you'
6)replace(old,new[,count]):替换指定的字符串,count指定替换的最大次数,如
>>>str = 'I love you'
>>>str.replace('you','running')
'I love running'
7)split(sep=None,maxsplit=-1)
用法与join相反,用于拆分字符串,不带参数默认以空格为分隔符切片字符串,若maxsplit有设置,则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接的列表
>>>str = ''.join(['I','love','you'])
'I love you'
>>>str.split()
['I','love','you']
>>>str1 = '_'.join('good')
>>>str1.split(sep = '_')
['g','o','o','d']