前言
我的目标是加入自然语言处理实验室,学习自然语言处理的相关技术,而自然语言处理最常用的计算机语言就是python,所以在考核前有三次对python的培训,这篇笔记是第二次培训后总结的,知识密度比上次大了非常多,所以我也花了较大篇幅。
字符串
字符串基础
合并字符串
要合并变量,就用加号来拼接,一般用于被引号扩起的两个字符串中间或两个不加引号的变量名,输出就可以把他们粘起来;
值得注意的是,用加号合并的两个变量一定要是同类型的变量!
#字符串的加法使用
print('GDU'+'FS') #合并字符串
a='GDU'
b='FS'
print(a+b) #合并变量
a='GDU'
print(a+'FS') #合并变量和字符串
#以上三种使用方法都能输出 GDUFS。
也可以不用加号,啥符号也不加,字符串也会自动合并,但这样不可用于合并变量,也不可用于合并变量与字面值。
print('GDU''FS')
'''在print语句里可以直接写两个由引号括起来的字符串,
这样输出,中间就没有空格,相当于将两个字符串粘连起来。'''
重复字符串
字符串也可以用*来重复,比如3*'略',就会输出 略略略;
print(3*'略')
#输出就是 略略略
索引
字符串支持索引来提取单个字符,也就是下标访问,在声明变量后,可以用 变量名[下标] 这样的格式来索引字符串中的一个元素。
word='GDUFS'
print(word[0]) #将输出 G
print(word[4]) #将输出 S
要记住的是,第一个字符的索引是0,往正数索引就是从第一个往右排,往负数索引的话,最后一个字符的索引是-1,然后以此类推。
word='GDUFS'
print(word[-1]) #将输出 S
print(word[-5]) #将输出 G
索引越界会报错,如果一个字符串有六个字符组成,那么索引的范围就是-6 ~ 5,超出这个范围就会报错。
word='GDUFS'
print(word[-11])
print(word[100])
#以上两个索引都会报错,因为超出下标范围了。
切片
切片就是[start:end],会切到一个字符的左侧;
word=['G','D','U','F','S']
print(word[0:2])
'''会输出 ['G','D'],
可以理解为是从'G'的左侧切到'U'的左侧。'''
切片索引的默认值很有用,省略开始索引,就会默认其为0,省略结束索引,就默认切到字符串末尾,也就是最右端;
word='GDUFS'
print(word[:3]) #会输出 GDU
print(word[3:]) #会输出 FS
还可以这样理解切片,索引指向的是字符之间 ,第一个字符的左侧标为 0,最后一个字符的右侧标为 n ,n 是字符串长度。
切片中用负数索引,开始索引同样要比结束索引小,切出来的顺序不变,但切片索引不能同时出现正数和负数,切口还是在字符的左端;
word='GDUFS'
print(word[-3:-1])
#会输出 UFS
切片会自动处理越界索引,索引过小,会切到左端,索引过大,就会切到右端;
不能使用索引或切片后再赋值,要用索引和切片来组成新的字符串,要创建一个新的字符串;越界会判错;
-
成员运算符
-
in 和 not in;连接两个字符串,判断前面那个在不在后面那个里面,用成员运算符 in和not in连接两个字符得到的语句有返回值,True或者False;这个 字符串 成员运算符 字符串 的格式代表的就是一个布尔值。
-
word='GDUFS' print('G' in word) #会输出 True print('S' not in word) #会输出 False
字符串常用方法
长度
用内置函数len()来计算返回字符串的长度;
word='GDUFS'
print(len(word))
#会输出变量word所存储的字符串的长度,也就是 5;
大小写转化
.lower() 大写转小写;.upper()小转大写;
字母大小写转换的格式是 str.upper() 或 str.lower() ,由于二者都有返回值,所以不能单独成句,一般放在print语句的括号内或将整体赋值给一个新变量,而且转换后不改变原字符串的大小写;
word='GDUFS'
print(word.upper())
print(word.lower())
wow="!!!"
print(wow.lower())
'''输出如下:
GDUFS
gdufs
!!!
'''
第一个单词首字母大写用str.capitalize();
所有单词首字母大写用str.title();
a="the book is in my schoolbag."
print(a.title())
print(a.capitalize())
'''
The Book Is In My Schoolbag.
The book is in my schoolbag.
'''
大小写判断
str.isupper() 和 str.islower() 判断字符串中所有能区分大小写的字符是否全为大写或全为小写,因为会判断是True或者False,有返回值,可以直接在print()里用,也可以将其赋值给新变量;
word='GDUFS'
print(word.upper()) #输出 True
print(word.lower()) #输出 False
拼接和分割
join拼接符是列表转字符串,拼接的格式是"str".join([ ]),意思是以str为连接物把列表里的元素连成字符串;列表里的数据必e须是字符串;
text=['G','D','U','F','S']
print(''.join(text))
#输出 GDUFS
print(' '.join(text))
#输出 G D U F S
print('1'.join(text))
#输出 G1D1U1F1S
split分隔符是字符串转列表;分割的格式是"str".split("m"),意思就是以str里的字符m为切割处,把m踢走,然后切成列表。
sentence=input() #输入 G D U F S
print(sentence.split(' ')) #输出列表 ['G','D','U','F','S']
总之就是,前接后,后割前;
若要分割连在一起的字符串,则需要用强制类型转换,用 list() 直接将字符串转换为列表;
a='GDUFS'
b=list(a)
print(b) #输出列表 ['G','D','U','F','S']
去前后缀
str.strip() 用于将字符串前后的空格去掉;
a=" GDUFS "
print(a.strip()) #输出 GDUFS,前后没有空格
判断前后缀
str.startswith(),括号里填写一个带引号的字符,若该字符是原字符串的前缀字符,则输出True,否则就输出False;判断后缀的 str.endswith() 同理;
a="GDUFS"
print(a.startswith("G"))
print(a.endswith("A"))
'''
True
False
'''
替换
用 str.replace('old','new'),就会将字符串里所有的old,都换成new。
a="the chest is harder than the desk."
print(a.replace("the","a"))
print(a.replace("h","o"))
'''
a chest is harder than a desk.
toe coest is oarder toan toe desk.
'''
字母判断 n.isalpha() 若字符串中的所有字符都是字母或汉字,则判断为True,否则为False;
数值判断 n.isnumeric()汉字数字算是数值;
数字判断 n.isdigit(),判断像123这样的数字;
字母数字判断 n.isalnum(),以上三者的结合体;
字符串格式化
printf风格,在“”里面用到%占位符,后面要再用%引出(),里面填要放在占位符位置的字符;
format风格,用{}作为占位符,后面是format而不是{};{}里面的数字表示字符在后面括号里面的顺序;
f-string风格,在“”前加上f,里面直接用{}里面填上定义好的变量名;这个最好用!
> >> event = "coding"> >> room_id = "A202"> >> duration = 2> >>> >># printf style> >> print ( "I'm %s at %s for %d hours" % (event, room_id, duration))I'm coding at A202 for 2 hours> >>> >> # format style> >> print ( "I'm {} at {} for {} hours" .format(event, room_id, duration))I'm coding at A202 for 2 hours> >>> >> # f-string style> >> print (f "I'm {event} at {room_id} for {duration} hours" )I'm coding at A202 for 2 hours
列表
列表基础
列表的表示
用方括号括起来,里面用逗号分隔开,例如[1,2,3,4]
列表可以包含不同类型的元素,但一般要保持类型相同,注意字符要加引号,例如 ['G','D','U','F','S'];
创建列表和字符串一样,需要列表名和赋值号,例如 text=[1,'G',2,'D'];
合并和重复
列表可以使用+来合并列表;可以用*来重复,但是 是重复元素而非列表,最后呈现的是元素在一个列表里重复,例如:
a=[1,2,3,4,5,6]
print(a*3)
'''
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
'''
索引和切片
列表也可以像字符串那样索引,只是索引出的不是单个字符,而是列表里对顺序的字符串或数字;列表也支持切片,切出的还是列表。
a=[11,22,33,44,55]
print(a[1])
print(a[-1])
print(a[0:3])
'''
22
55
[11,22,33]
'''
列表可以通过索引和切片再赋值,改变列表里的相应元素;切片赋字符串时,会自动把字符串切成一个个单个字符,再替换原列表中的元素;
a=["basketball","football","baseball","tennis"]
a[3]="pingpong"
print(a)
a[0:2]="123"
print(a)
'''
['basketball', 'football', 'baseball', 'pingpong']
['1', '2', '3', 'baseball', 'pingpong']
'''
列表的长度
用函数len()来统计列表的长度;
a=[6,7,8,9,0]
print(len(a))
'''
5
'''
元素的包含
in和not in
a=[1,2,3,4]
print(1 in a)
print(3 not in a)
'''
True
False
'''
嵌套列表
可以在列表里填列表
a=[1,2,3]
b=['g','d','u']
c=[a,b]
print(c)
'''
[[1,2,3],['g','d','u']]
'''
列表赋值,浅复制,深复制
自行了解
列表常用方法
无返回值方法:增加
list.append(x) 在表末加一个元素,括号里面可以是数字或带引号的字符串;
a=['PYXX','PTYZ','GDUFS']
a.append('THU')
print(a)
'''
['PYXX','PTYZ','GDUFS','THU']
'''
list1.extend(list2) 在表末增加其他列表中的值,在括号里直接写一个小列表也行,注意这样不是嵌套;
a=['PYXX','PTYZ','GDUFS']
b=['THU']
a.extend(b)
print(a)
'''
['PYXX', 'PTYZ', 'GDUFS', 'THU']
'''
list.insert(n,x) 在列表里的指定位置插入,例如:
a=[1,3,5,9]
a.insert(3,7)
print(a)
'''
[1,3,5,7,9]
'''
有返回值方法:删除
list.pop() 直接调用的话,默认是要删除列表里的最后一位,返回值是被删除的元素;也可以填入指定序号来删除;一般利用其无返回值方法的单方面特性,先操作,再输出被操作后的列表。
a=[1,2,3,4,5]
a.pop()
print(a)
a.pop(0)
print(a)
print(a.pop(1))
'''
[1, 2, 3, 4]
[2, 3, 4]
3
'''
list.remove(x) 移除,移除表里某个值的第一个匹配项,例如:
a=[1,1,1,4,5]
a.remove(1)
print(a)
'''
[1,1,4,5]
'''
修改
list.reverse() 原地反转列表;
a=[1,1,1,4,5]
a.reverse()
print(a)
'''
[5,4,1,1,1]
'''
list.sort() 列表排序,列表中都是数字的话,就从小到大排,都是字符串的话,就按照每个字符串的首字母在字母表的顺序排;
a=[12,43,1,8,13132,34]
a.sort()
print(a)
b=["basketball","pen","desk","cellphone"]
b.sort()
print(b)
'''
[1, 8, 12, 34, 43, 13132]
['basketball', 'cellphone', 'desk', 'pen']
'''
后记
第二次的笔记终于总结完了,该写作业了!