【Python】初学自用笔记 第二篇 字符串和列表

前言

       我的目标是加入自然语言处理实验室,学习自然语言处理的相关技术,而自然语言处理最常用的计算机语言就是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, dura
tion))
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']
'''

后记

第二次的笔记终于总结完了,该写作业了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值