欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

序列的运算、操作、函数/方法

程序员文章站 2022-09-28 13:37:36
1.序列 (1) 序列的标准类型运算 a) <、>、<=、>=、==、!= 值比较 例如: >>>'apple' <...

1.序列

(1) 序列的标准类型运算

a) <、>、<=、>=、==、!= 值比较

例如:

>>>'apple' < 'banana'
True
>>>[1,3,5] != [2,4,6]
True

b) is、is not 对象身份比较

>>>aTuple=('BA','The Boeing Company','122.64')
>>>bTuple=aTuple
>>>bTuple is not aTuple
False

c) and、or、not 逻辑运算

例如:

>>>('86.40' < '122.64') and ('apple' > 'banana')
False

(2) 通用序列类型操作

a) seq[start: end] 切片操作

例如:

>>> week = ['Monday','Tuesday','Wendesday','Thursday','Friday','Saturday','Sunday']
>>> print(week[1],week[-2],'\n',week[1:4],'\n',week[:6],'\n',week[::-1])
Tuesday Saturday
 ['Tuesday', 'Wendesday', 'Thursday']
 ['Monday', 'Tuesday', 'Wendesday', 'Thursday', 'Friday', 'Saturday']
 ['Sunday', 'Saturday', 'Friday', 'Thursday', 'Wendesday', 'Tuesday', 'Monday']

b) * 重复组合序列数据

例如:

>>> 'apple'*3
'appleappleapple'
>>> ['apple']*3
['apple', 'apple', 'apple']

c) + 连接2个序列

例如:

>>> 'pine'+'apple'
'pineapple'
>>> ['apple','orange']+['grape']
['apple', 'orange', 'grape']

d) in、not in 判断元素是否存在序列中

例如:

>>> 'BA' in ('BA' ,'The Beoing Company','122.64')
True

(3) 序列常用函数

a) 序列类型转换内建函数:

list(iter) 将可迭代对象iter转换成列表

tuple(iter) 将可迭代对象iter转换成元组

str(obj) 将对象obj转换成字符串表示

>>> list('Hello,World')
['H', 'e', 'l', 'l', 'o', ',', 'W', 'o', 'r', 'l', 'd']
>>> tuple("hello,world")
('h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd')
>>> str(['apple','banana'])
"['apple', 'banana']"

b) 其它常用内建函数:

len(sequence) 返回sequence的长度,为整型类型

sorted(iter, key, reverse) 返回可迭代对象iter排序后的列表,key用来指定排序的规则,reverse用来指定顺序还是逆序排列

reversed(sequence) 返回序列sequence逆序排列后的迭代器

sum(iter, start) 将iter中的数值和start参数的值相加,返回float类型数值

max(iter) 返回可迭代对象iter中的最大值

min(iter) 返回可迭代对象iter中的最小值

enumerate(iter[, start]) 返回一个enumerate对象,可生成一个迭代器,该迭代器的元素是由参数iter元素的索引和值组成的元组

zip(iter1 [,iter2 […]]) 返回一个zip对象,可生成一个迭代器,该迭代器的第n个元素是每个可迭代对象的第n个元素组成的元组


2.字符串

字符串常用方法:

方法 描述

s.capitalize() 返回字符串s首字母大写其余小写的形式|

s.lower() 返回字符串s的小写形式

s.upper() 返回字符串s的大写形式

s.title() 返回字符串s的标题形式即单词首字母大写形式

s.format(*args, **kwargs) 格式化字符串操作

s.count(sub[, start[, end]]) 返回指定字符在[指定位置的]字符串s中出现的次数

s.find(sub[, start[, end]]) 返回指定字符在[指定位置的]字符串s中出现的索引号,找不到则返回-1

s.index(sub[, start[, end]]) 与 find()类似,不同的是如果找不到会引发ValueError异常

s.replace(old, new[, count]) 把字符串s中的old(旧字符串)替换成new(新字符串)。如果指定第三个参数count,则仅仅替换前count次出现的子串

s.lstrip([chars]) 移除字符串s左边的指定字符(默认为空格),返回移除字符串s左边指定字符后生成的新字符串

s.rstrip([chars]) 移除字符串s末尾的指定字符(默认为空格),返回移除字符串s末尾指定字符后生成的新字符串

s.strip([chars]) 移除字符串s头尾指定的字符(默认为空格),返回移除字符串s头尾指定字符后生成的新字符串

s.join(iterable) 用指定的字符串s连接元素为字符串的可迭代对象

s.split(sep=None, maxsplit=-1) 以指定的字符作为分隔符(默认为空格)分割字符串s,maxsplit指分割次数(默认为不限制次数)

s.endswith(suffix[, start[, end]]) 判断字符串s[的指定位置]是否以后缀suffix结尾

s.startswith(prefix[, start[, end]]) 判断字符串s[的指定位置]是否以前缀prefix开头

eg:

>>> song = "Blowing in the wind"
>>> song.find("the")
11
>>> song.find("the",8,12)
-1
>>> song.lower()
'blowing in the wind'
>>> song
'Blowing in the wind'
>>> song.split(' ')
['Blowing', 'in', 'the', 'wind']
>>> song.replace("the","that")
'Blowing in that wind'
>>> aList = ["hello","world"]
>>> ' '.join(aList)
'hello world'
>>> y = "你好"
>>> z = y.encode('utf-8')
>>> z
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> t = z.decode()
>>> t
'你好'

eg:字符串中标点符号的个数:

>>> aStr = "Hello,World!"
>>> bStr = aStr[:6]+"python!"
>>> bStr
'Hello,python!'
>>> count = 0
>>> for ch in bStr[:]:
...     if ch in ',.!?':
...         count += 1
...
>>> print('There are {0:d} punctuation marks.'.format(count))
There are 2 punctuation marks.

eg:判断是否为回文字符串

>>> sStr = 'acdhdca'
>>> if(sStr == ''.join(reversed(sStr))):
...     print('yes')
... else:
...     print('no')
...
yes

eg:判断是否为标题格式

>>> aStr = 'What do you think of this saying "No pain,No gain"?'
>>> lindex = aStr.index('\"',0,len(aStr))
>>> rindex = aStr.rindex('\"',0,len(aStr))
>>> tempStr = aStr[lindex+1:rindex]
>>> tempStr
'No pain,No gain'
>>> if tempStr.istitle():
...     print('yes')
... else:
...     print('no')
...
no
>>> print(tempStr.title())
No Pain,No Gain

3.列表

列表是可扩展的容器对象,可以包含不同类型的对象。

eg:动态创建列表

>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [(x+1,y+1) for x in range(2) for y in range(2)]
[(1, 1), (1, 2), (2, 1), (2, 2)]

列表常用方法

方法 描述

l.append(obj) 在列表l末尾添加新的对象

l.count(obj) 统计某个元素在列表l中出现的次数

l.extend(seq) 在列表l末尾一次性追加另一个序列seq中的多个值(用新列表扩展原来的列表)

l.index(obj) 从列表l中找出某个值第一个匹配项的索引位置,索引从0开始

l.insert(index, obj) 将对象obj插入列表l中索引为index的元素前

l.pop(index) 移除列表l中索引为index的一个元素(默认为最后一个元素),并且返回该元素的值

l.remove(obj) 移除列表l中某个值的第一个匹配项

l.reverse() 将列表l中的元素反转

l.sort(key=None, reverse=False) 对原列表l进行排序,可通过参数key指定排序依据,通过参数reverse指定顺序(默认方式)或逆序排列

eg:sorted()函数与列表的sort()方法的区别

利用sorted()函数对列表进行排序,只是新生成了一个列表的副本,原始列表内容没有改变。通过列表的sort()方法对列表进行排序,是对原始列表真正的排序,列表内容会改变。

>>> aList=[3,5,2,4]
>>> aList
[3, 5, 2, 4]
>>> sorted(aList)
[2, 3, 4, 5]
>>> aList
[3, 5, 2, 4]
>>> aList.sort()
>>> aList
[2, 3, 4, 5]

4.元组

元祖和列表的区别:除了列表用[]表示、元组用()表示之外,最重要的区别是,列表元素可以改变,元组元素不可以改变

eg:创建元组

>>> bTuple = (['Monday',1],2,3)
>>> bTuple[0][1]
1
>>> len(bTuple)
3
>>> bTuple[1:]
(2, 3)
>>> 2014,
(2014,)

元组用在什么地方?

(1)在映射类型中当做键使用

(2)函数的特殊类型参数

eg: 可变长位置参数:

>>> def foo(args1,*argst):
...     print(args1)
...     print(argst)
...
>>> foo('Hello','Wangdachui','Niuyun','Linling')
Hello
('Wangdachui', 'Niuyun', 'Linling')

(3)作为函数的特殊返回值

>>> def foo():
...     return 1,2,3
...
>>> foo()
(1, 2, 3)

元组常用函数:

函数 描述

len(t) 计算元组t的元素个数

max(t) 返回元组t中元素的最大值

min(t) 返回元组t中元素的最小值

tuple(seq) 将序列seq转换为元组