Python零基础入门笔记

it2023-03-27  78

1、字符串切片slice操作

格式:[起始偏移量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"

2、split()分割和join()合并

spilt()分割

格式: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()合并

格式:'连接符'.join(list)

作用:基于指定连接符,将列表内字符串连接为一个字符串

>>> a=['a','b','c'] >>> ''.join(a) 'abc' >>> '*'.join(a) 'a*b*c'

用字符串拼接符+连接字符串要比join费时,+每次会产生新的字符串对象,join会在拼接前计算所有字符串的长度,然后逐一拷贝,仅创建一次新的字符串对象。

3、字符串驻留机制和字符串比较

字符串驻留

仅保存一份相同且不可变字符串的方法,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制。

>>> 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,判断某个字符(子字符串)是否存在于字符串中。

4、字符串常用方法汇总

常用查找方法

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

5、字符串的格式化

format用法一

>>> a='名字是{0},年龄是{1},{0}是个好人' >>> a.format('Make',20) '名字是Make,年龄是20,Make是个好人'

format用法二

>>> a='名字是{name},年龄是{age},{name}是个好人' >>> a.format(name='Make',age=20) '名字是Make,年龄是20,Make是个好人'

填充与对齐

^<>分别是居中、左对齐,右对齐,后面带宽度

:后面带填充的字符,只能是一个,默认空格

>>> '{:*>8}'.format('abc') '*****abc' >>> '我是{0},我是个{1:*^8}'.format('Make','好人') '我是Make,我是个***好人***'

数字格式化

>>> a='我是{0},我的存款为{1:.2f}' >>> a.format('Make',1024.2333) '我是Make,我的存款为1024.23'

数字

格式

输出

说明

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

6、可变字符串

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'

7、基本运算符

运算符

说明

and、or、not

布尔与、布尔或、布尔非

is、not is

同一性判断,判断是否为同一个对象

<、<=、>、>=、!=、==

比较值的大小,可连用

|、^、&

按位或、按位异或、按位与

<<、>>

移位

~

按位翻转

+、-、*、/、//、%

加、减、乘、浮点除、整数除、取余

**

幂运算

1、比较运算符可以连用,含义与日常使用一致

>>> a=4 >>> 3<a<5 #关系运算符可以连用 True

2、位操作

>>> 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 2

3、加法操作

(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不支持自增(++)、自减(--)

运算符优先级

位运算/算术运算>比较运算符>赋值运算符>逻辑运算符

其他不需要记,复杂算式用()


第三章 序列

1.1 列表的创建

基本语法[]创建

>>>a=[1,2,'a','bc'] >>>a=[] #创建一个空列表

list()创建

使用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()创建整数列表

格式: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=[x*2 for x in range(5)] #循环创建多个元素 >>>a [0, 2, 4, 6, 8] >>>a=[x*2 for x in range(100) if x%9==0] #通过if过滤元素 >>>a [0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

1.2 列表元素的增加和删除

append()方法

在尾部添加,速度最快

>>>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]

extend()方法

将目标列表所有元素添加至尾部,不产生新列表

>>>a=[2,4] >>>a.extend([5,6]) >>>a [2, 4, 5, 6]

insert()插入元素

该操作会使其他元素进行移动,影像处理速度,涉及大量元素时,应避免使用

>>>a=[1, 2, 3] >>>a.insert(2,666) #insert(位置,元素) >>>a [1, 2, 666, 3]

乘法扩展

>>> a=[1,2,3] >>> a*=3 >>> a [1, 2, 3, 1, 2, 3, 1, 2, 3]

1.3列表元素的删除

del()方法

删除指定位置元素

>>> a=[1,2,3,4,5] >>> del a[1] >>> a [1, 3, 4, 5]

pop()方法

删除指定位置元素并返回,未指定则默认操作末尾元素

>>> a=[1,2,3,4,5] >>> a.pop(1) 2 >>> a.pop() 5 >>> a [1, 3, 4]

remove()方法

删除首次出现的指定元素,若不存在则返回异常

>>> 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

1.4 列表元素访问和计数

通过索引直接访问元素

索引区间[0,列表长度-1]

>>>a=[1,2,3] >>>a[1] 2

index()方法

格式:index(value,[start,[end]]) start和end指定范围

作用:获得指定元素首次出现的位置

>>> a=[1,2,3,1,2,3] >>> a.index(2) 1 >>> a.index(2,3) 4

count()方法

获得指定元素在列表中出现的次数

>>> a=[1,2,3,1,2,3] >>> a.count(1) 2

len()方法

返回列表长度(元素个数)

>>> 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.5 列表切片操作

同字符串操作基本一致,字符串的每个字符等同于列表的每个元素

操作及说明

示例

结果

[:]

[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]

1.6 列表的遍历

>>> a=[1,2,3] >>> for x in a: print(x) 1 2 3

1.7 列表的排序

修改原列表,不创建新列表的方法:

>>> 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]

reversed()返回迭代器

用于逆序返回列表,逆序输出另一种方法:切片[::-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、min和sum,只可用于数值型列表,其他列表会报错

max(a)返回列表内最大值

sum(a)返回列表数值总和

1.8 多维列表

二维列表

一维列表用于存放线性数据,之前所用到的都是一维列表;

二维列表用于存放表格型数据,例如:

姓名

年龄

薪资

城市

小明

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 深圳

 

最新回复(0)