格式:[起始偏移量start:终止偏移量end:步长step]
作用:从start开始,按步长输出到end-1
操作及说明
示例
结果
[:]
"abcdef"[:]
"abcdef"
[start:]
"abcdef"[2:]
"cdef"
[:end]
"abcdef"[:2]
"ab"
[start:end]
"abcdef"[2:4]
"cd"
[start:end:step]
"abcdef"[1:5:2]
"bd"
"abcdef"[-3:]
"def"
"abcdef"[-6:-1]
"abcde"
倒序输出字符串
"abcdef"[::-1]
"fedcba"
格式:string.split('分隔符') 默认间隔符为换行符/空格/制表符
作用:基于指定分隔符,将字符串分隔成多个子字符串,并存入列表
>>> a="to be or not to be" >>> a.split() ['to', 'be', 'or', 'not', 'to', 'be'] >>> a.split('be') ['to ', ' or not to ', ''] >>> a.split('to') ['', ' be or not ', ' be']格式:'连接符'.join(list)
作用:基于指定连接符,将列表内字符串连接为一个字符串
>>> a=['a','b','c'] >>> ''.join(a) 'abc' >>> '*'.join(a) 'a*b*c'用字符串拼接符+连接字符串要比join费时,+每次会产生新的字符串对象,join会在拼接前计算所有字符串的长度,然后逐一拷贝,仅创建一次新的字符串对象。
仅保存一份相同且不可变字符串的方法,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制。
>>> a='abc_3' >>> b='abc_3' >>> a is b True >>> c='d#' >>> d='d#' >>> c is d False >>> id(a);id(b) 2162648141192 2162648141192 >>> id(c);id(d) 2162648140856 2162648141080 >>> a+b is 'abc_3abc_3' False >>> a+b == 'abc_3abc_3' True使用==、!=对字符串进行比较,是否是相同字符的字符串;
使用is、not is,判断两个对象是否为同一个对象,比较的是对象的地址。
使用in、not in,判断某个字符(子字符串)是否存在于字符串中。
a='to be or not to be'
方法示例
说明
结果
len(a)
字符串长度
18
a.startswith('to')
以指定字符串开头
True
a.endswith('be')
以指定字符串结尾
True
a.find('t')
第一次出现指定字符串的位置
0
a.rfind('t')
最后一次出现指定字符串的位置
13
a.count('o')
指定字符串出现的次数
4
a.isalnum()
所有字符全为字母或数字
False
方法示例
说明
结果
'*a*b*c*'.strip('*')
去除首尾指定字符串
'a*b*c'
'*a*b*c*'.lstrip('*')
去除左侧指定字符串
'a*b*c*'
'*a*b*c*'.rstrip('*')
去除右侧指定字符串
'*a*b*c'
' a*b*c '.strip()
默认去除空格/制表符
'a*b*c'
a='to be OR not to be'
方法示例
说明
结果
a.capitalize()
产生新字符串,首字母大写
'To be or not to be'
a.title()
产生新字符串,每个单词首字母大写
'To Be Or Not To Be'
a.upper()
产生新字符串,所有字母转大写
'TO BE OR NOT TO BE'
a.lower()
产生新字符串,所有字母转小写
'to be or not to be'
a.swapcase()
产生新字符串,所有字母大小写互换
'TO BE or NOT TO BE'
方法示例
说明
结果
'abc'.center(10,'*')
居中对齐
'***abc****'
'abc'.ljust(10,'*')
左对齐
'abc*******'
'abc'.rjust(10)
右对齐
' abc'
方法示例
说明
结果
'123abc'.isalnum()
是否全为字母或数字(含汉字)
True
'abc派森'.isalpha()
是否只有字母(含汉字)
True
'123'.isdigit()
是否只有数字
True
' '.isspace()
是否为空白符
True
'aB'.isupper()
是否全为大写字母
False
'123abc'.islower()
是否全为小写字母
True
^<>分别是居中、左对齐,右对齐,后面带宽度
:后面带填充的字符,只能是一个,默认空格
>>> '{:*>8}'.format('abc') '*****abc' >>> '我是{0},我是个{1:*^8}'.format('Make','好人') '我是Make,我是个***好人***'数字
格式
输出
说明
3.1415926
{:.2f}
3.14
保留小数点后两位
3.1415926
{:+.2f}
+3.14
带符号保留小数点后两位
2.71828
{:.0f}
3
不带小数
5
{:0>2d}
05
数字补0,右对齐,宽为2
5
{:x<4d}
5xxx
数字补x,左对齐,宽为4
10
{:x<4d}
10xx
数字补x,左对齐,宽为4
1000000
{:,}
1,000,000
用逗号进行千位分割
0.25
{:.2%}
25.00%
百分比格式
1000000000
{:.2e}
1.00e+09
指数形式(科学计数法)
13
{:10d}
13
右对齐,宽为10
13
{:<10d}
13
左对齐,宽为10
13
{:^10d}
13
居中对齐,宽为10
Python中,字符串为不可变对象,要想修改/添加值,只能创建新的字符串。但是可以使用io.StringIO()对象或array模块。
>>> import io >>> a='1234567' >>> sio=io.StringIO(a) >>> sio <_io.StringIO object at 0x000001F787D78048> >>> sio.getvalue() '1234567' >>> sio.seek(6) 6 >>> sio.write('0') 1 >>> sio.getvalue() '1234560'运算符
说明
and、or、not
布尔与、布尔或、布尔非
is、not is
同一性判断,判断是否为同一个对象
<、<=、>、>=、!=、==
比较值的大小,可连用
|、^、&
按位或、按位异或、按位与
<<、>>
移位
~
按位翻转
+、-、*、/、//、%
加、减、乘、浮点除、整数除、取余
**
幂运算
1、比较运算符可以连用,含义与日常使用一致
>>> a=4 >>> 3<a<5 #关系运算符可以连用 True2、位操作
>>> a=0b11001 >>> b=0b01000 >>> bin(a|b);bin(a^b);bin(a&b) '0b11001' '0b10001' '0b1000' >>> a=3;b=8 >>> a<<2;b>>2 12 23、加法操作
(1)数字相加 3+2 >>> 5
(2)字符串拼接 "3"+"2" >>> "32"
(3)列表、元组等合并 [1,2,3]+[4,5,6] >>> [1,2,3,4,5,6]
4、乘法操作
(1)数字相乘 3*2 >>> 6
(2)字符串复制 "python"*2 >>> "pythonpython"
(3)列表、元组等复制 [1,2,3]*2 >>> [1,2,3,1,2,3]
a+=b等价于a=a+b,同理上述运算符均可
注:与C不同,Python不支持自增(++)、自减(--)
位运算/算术运算>比较运算符>赋值运算符>逻辑运算符
其他不需要记,复杂算式用()
使用list()可将任何可迭代数据转化为列表
>>>a=list() #创建一个空列表 >>>a=list(range(10)) >>>a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>a=list("abc,de") >>>a ['a', 'b', 'c', ',', 'd', 'e']格式:range([start],end,[step])
start可选,默认0;end必选;step可选,默认1
>>> list(range(3,10,2)) [3, 5, 7, 9] >>> list(range(3,-9,-1)) [3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8] >>> list(range(-10,0)) [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]在尾部添加,速度最快
>>>a=[2,4] >>>a.append(3) >>>a [2, 4, 3] >>> a.append([3,4]) >>> a [2, 4, [3, 4]]产生一个新对象,不建议大量数据操作
>>>a=[2,4] >>>a=a+[3] >>>a [2, 4, 3]将目标列表所有元素添加至尾部,不产生新列表
>>>a=[2,4] >>>a.extend([5,6]) >>>a [2, 4, 5, 6]该操作会使其他元素进行移动,影像处理速度,涉及大量元素时,应避免使用
>>>a=[1, 2, 3] >>>a.insert(2,666) #insert(位置,元素) >>>a [1, 2, 666, 3]删除指定位置元素
>>> a=[1,2,3,4,5] >>> del a[1] >>> a [1, 3, 4, 5]删除指定位置元素并返回,未指定则默认操作末尾元素
>>> a=[1,2,3,4,5] >>> a.pop(1) 2 >>> a.pop() 5 >>> a [1, 3, 4]删除首次出现的指定元素,若不存在则返回异常
>>> a=[1,2,3,1,2,3] >>> a.remove(1) >>> a [2, 3, 1, 2, 3] >>> a.remove(4) Traceback (most recent call last): File "<pyshell#69>", line 1, in <module> a.remove(4) ValueError: list.remove(x): x not in list索引区间[0,列表长度-1]
>>>a=[1,2,3] >>>a[1] 2格式:index(value,[start,[end]]) start和end指定范围
作用:获得指定元素首次出现的位置
>>> a=[1,2,3,1,2,3] >>> a.index(2) 1 >>> a.index(2,3) 4获得指定元素在列表中出现的次数
>>> a=[1,2,3,1,2,3] >>> a.count(1) 2返回列表长度(元素个数)
>>> a=[1,2,3,1,2,3] >>> len(a) 6理论上可以使用count计数,返回0则不存在;大于0则存在。
但使用in/not in更方便判断
>>> a=[1,2,3,1,2,3] >>> 2 in a True >>> 4 not in a True同字符串操作基本一致,字符串的每个字符等同于列表的每个元素
操作及说明
示例
结果
[:]
[1,2,3,4,5,6][:]
[1, 2, 3, 4, 5, 6]
[start:]
[1,2,3,4,5,6][2:]
[3, 4, 5, 6]
[:end]
[1,2,3,4,5,6][:2]
[1, 2]
[start:end]
[1,2,3,4,5,6][2:4]
[3, 4]
[start:end:step]
[1,2,3,4,5,6][1:5:2]
[2, 4]
[1,2,3,4,5,6][-3:]
[4, 5, 6]
[1,2,3,4,5,6][-6:-1]
[1, 2, 3, 4, 5]
倒序输出字符串
[1,2,3,4,5,6][::-1]
[6, 5, 4, 3, 2, 1]
修改原列表,不创建新列表的方法:
>>> a=[3,1,4,2] >>> a.sort() #默认升序排列 >>> a [1, 2, 3, 4] >>> a.sort(reverse=True) #降序排列 >>> a [4, 3, 2, 1] >>> import random >>> random.shuffle(a) #打乱顺序(洗牌) >>> a [2, 1, 4, 3]不改变原列表,创建新列表的方法:
>>> a=[3,1,4,2] >>> a=sorted(a) >>> a [1, 2, 3, 4] >>> a=sorted(a,reverse=True) >>> a [4, 3, 2, 1]用于逆序返回列表,逆序输出另一种方法:切片[::-1]
>>> a=[3,1,4,2] >>> c=reversed(a) >>> c <list_reverseiterator object at 0x0000017DC273DBA8> >>> list(c) #第一次遍历 [2, 4, 1, 3] >>> list(c) #第二次遍历 []打印c时,显示的是一个迭代对象,迭代对象在第一次使用时已经遍历结束,因此第二次无法再使用
max(a)返回列表内最大值
sum(a)返回列表数值总和
二维列表
一维列表用于存放线性数据,之前所用到的都是一维列表;
二维列表用于存放表格型数据,例如:
姓名
年龄
薪资
城市
小明
18
10000
上海
小强
19
20000
北京
小刚
20
30000
深圳
>>> a=[ ['小明',18,10000,'上海'], ['小强',19,20000,'北京'], ['小刚',20,30000,'深圳'], ] >>> a [['小明', 18, 10000, '上海'], ['小强', 19, 20000, '北京'], ['小刚', 20, 30000, '深圳']] >>> a[0] ['小明', 18, 10000, '上海'] >>> a[0][0] '小明' >>> for m in range(3): #嵌套循环打印列表内容 for n in range(4): print(a[m][n],end='\t') print() #打印完一行,换行 小明 18 10000 上海 小强 19 20000 北京 小刚 20 30000 深圳