第三讲|字符串、列表和栈

匿名 (未验证) 提交于 2019-12-03 00:33:02

今天考了两门,哇简直啦,全部是背诵的题目,受不了了我赶紧来继续我的Python吧
这一章呢我要将的呢是数据结构:字符串、列表、元组、栈、队列、字典和集合

字符串

字符创可谓是编程语言里面的大哥呀,也是我们经常使用的一种形式

创建字符串
在Python里面我们只要给字符串赋值就可以了
srt1 = "hello world" str2 = "ABCDEFHHFHJ"

访问字符串里面的元素
在Python里面可以通过向访问数组一样通过下标来访问字符串里面的某一个具体的元素,也可以一次访问多个字符串


例如:

str1 = "hello word" print("srt1=",str1) print("str1[0]=",str1[0]) print("str1[0:5]=",str1[0:5]) print("str1[4:9]=",str1[4:9])

执行结果:

srt1= hello word str1[0]= h str1[0:5]= hello str1[4:9]= o wor

修改字符串:
修改字符串使用内置方法replace(old,new)来实现,此外还可以进行字符串的拼接
str1 = “i am li hua” str2 = "i am a student" str1 = str1 + str2 print("str1= ",str1") str1 = str1.replace(str2,"hello ") print("str1=",str1)

执行结果

str1=  i am li hua i am a student str1= i am li hua hello 

字符串运算符
字符串可以进行拼接,剪切,复值,成员运算等

str1 = "Hello world!" str2 = "Jack" #字符串拼接 print('str1+str2:',str1+str2) #字符串截取 print('str1[0:6]:',str1[0:6]) #字符串复制 print('str2*2:',str2*3) #成员运算:判断一个字符串是否包含某成员 print('world in str1?','world' in str1) print('word in str1?','word' in str1)

执行结果:

str1+str2: Hello world!Jack str1[0:6]: Hello str2*2: JackJackJack world in str1? True word in str1? False

字符串格式化输出:
注意这里的写法可能还有看不懂的人,少为解释一下:%d这是在字符串里面用例外的数来代替,代替的内容为%后面的东西
#格式化为十进制:%d print('PI is approximately equal to %d (I)'%(3.1415926)) #格式化字符串:%s print('PI is approximately equal to %s (II)'%(3.1415926)) #格式化浮点数字,可指定小数点后的精度,默认为6位小数:%f print('PI is approximately equal to %f (III)'%(3.1415926)) #格式化浮点数字,指定n位小数:%.nf print('PI is approximately equal to %.2f (IV)'%(3.1415926)) #用科学计数法格式化浮点数:%e print('PI is approximately equal to %e (V)'%(3.1415926)) #格式化为十进制:%d print('The road is about %d meters long (VI)'%(1234)) #格式化无符号八进制数:%d print('The road is about %o meters long (VII)'%(1234)) #格式化无符号十六进制数:%x print('The road is about %x meters long (VIII)'%(1234))

执行结果:

PI is approximately equal to 3 (I) PI is approximately equal to 3.1415926 (II) PI is approximately equal to 3.141593 (III) PI is approximately equal to 3.14 (IV) PI is approximately equal to 3.141593e+00 (V) The road is about 1234 meters long (VI) The road is about 1234 meters long (VII) The road is about 4d2 meters long (VIII)

字符串内建函数
Python提供了40余种内建函数,下面介绍几种
str1 = " Hello world! Hello" str2 = "Hello" #返回字符串的长度:len(str) print('str1的长度:',len(str1)) #对字符串进行分割:split(str),分割符为str,此处以空格进行分割 print('str1以空格分割的结果:',str1.split(' ')) #删除字符串字符串首尾的空格 print('str1删除首尾空格:',str1.strip()) #count(str2, beg>=0,end<=len(str1)) #返回 str2 在 str1 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str2出现的次 print('str2在str1中出现的次数:',str1.count(str2)) print('str2在str1中出现的次数(指定范围):',str1.count(str2,10,20)) #检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束 #如果是,返回 True,否则返回 False. print('str1是否以 str2结尾:',str1.endswith(str2)) print('str1是否以 str2结尾(指定范围):',str1.endswith(str2,10,19)) #检测 str2是否包含在字符串str1中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内 #如果包含返回开始的索引值,否则返回-1 print('str1中是否包含str2:',str1.find(str2)) print('str1中是否包含str2(指定范围):',str1.find(str2,10,20))

执行结果:

str1的长度: 19 str1以空格分割的结果: ['', 'Hello', 'world!', 'Hello'] str1删除首尾空格: Hello world! Hello str2在str1中出现的次数: 2 str2在str1中出现的次数(指定范围): 1 str1是否以 str2结尾: True str1是否以 str2结尾(指定范围): True str1中是否包含str2: 1 str1中是否包含str2(指定范围): 14

列表
Python的最重要的数据结构之一列表。列表使用[]方括号括起来,并且以;结束
#随意创建3个列表,同一个列表中可以存放任意基本数据类型 list1 = [3.14, 5.96, 1897, 2020, "China",3+4j]; list2 = [1, 2, 3, 4, 5 ]; list3 = ["BeiJing", "ShangHai", "NanJing", "GuangZhou"]; list4 = []

如上所示,列表中的数据项可以是不同的数据类型,如 list1,同时包含浮点型、整型、
长整型、字符串和复数;也可以创建一个空列表,如 list4
访问列表中的元素
通过索引下标访问列表中的元素,可以一次访问一个或多个元素。

#通过索引下标访问列表中的单个元素 print("list1[2]: ",list1[2]) print("list2[2]: ",list2[2]) print("list3[2]: ",list3[2]) #通过索引下标一次访问多个元素 print("list1[0:2]:",list1[0:2])

执行结果:

list1[2]:  1897 list2[2]:  3 list3[2]:  NanJing list1[0:2]: [3.14, 5.96]

更改列表中的元素

list1 = [3.14, 5.96, 1897, 2020, "China",3+4j]; print("before list1[3]: ",list1[4]) list1[4] = "Change" print("after list1[3]: ",list1[4])

执行结果:

before list1[3]:  China after list1[3]:  Change

删除列表中的元素
Python 提供三种删除列表中元素的方法:del、remove(obj)、clear(),分别用于删除列表中的元素和清空列表。
list1 = [3.14, 5.96, 1897, 2020, "China",3+4j]; print("Before the operation:",list1) del list1[3] list1.remove(3+4j) print("After deleting the element:",list1) list1.clear() print("After the emptying of the list:",list1)

执行结果:

Before the operation: [3.14, 5.96, 1897, 2020, 'China', (3+4j)] After deleting the element: [3.14, 5.96, 1897, 'China'] After the emptying of the list: []
向列表中添加新元素
有两个内建方法可以用于添加新元素:
1. append(object):添加新元素将新元素添加到列表末尾;
2. insert(index,object):插入新元素到指定索引位置
list1 = [3.14, 5.96, 1897, 2020, "China",3+4j]; print("before operation list1: ",list1) list1.append("New Ele-I") list1.insert(2, "New Ele-II") print("after operation list1: ",list1)


执行结果:

before operation list1:  [3.14, 5.96, 1897, 2020, 'China', (3+4j)] after operation list1:  [3.14, 5.96, 'New Ele-II', 1897, 2020, 'China', (3+4j), 'New Ele-I']

列表常用内建函数
上面介绍了关于列表的“增、删、改、查”基本操作,除此之外,Python 列表还有很多内
建函数和有趣的操作,接下来一一介绍。

list1 = [2012, 1949, 1897, 2050, 1945, 1949]; #求列表长度,即列表中元素的个数:len(obj) print("The length of the list: ", len(list1)) #求列表中元素的最大值:max(list) print("The largest element in the list: ", max(list1)) #求列表中元素的最小值:min(list) print("The smallest element in the list: ", min(list1)) #统计某个元素在列表中出现的次数:list.count(obj) print("The number of times 1949 appears: ", list1.count(1949)) #从列表中找出某个值第一个匹配项的索引位置:list.index(obj) print("The index of the first location of 1949: ", list1.index(1949)) #复制一个已有的表:list.copy() list2 = list1.copy() print("list2:", list2) #反转一个已有的表:list.reverse() list1.reverse() print("After reversing :", list1)

执行结果:

The length of the list:  6 The largest element in the list:  2050 The smallest element in the list:  1897 The number of times 1949 appears:  2 The index of the first location of 1949:  1 list2: [2012, 1949, 1897, 2050, 1945, 1949] After reversing : [1949, 1945, 2050, 1897, 1949, 2012]

列表常用操作
为了高效的使用列表,Python 支持一些常用的操作:列表拼接、列表乘法、迭代、嵌套
等。

list1 = [1,2,3,4] list2 = [5,6,"BeiJin",7,8] #列表拼接 print("list1 + list2:",list1 + list2) #列表乘法 print("list1*2:",list1*2) #判断元素是否存在于列表中 print("3 in list1?",3 in list1) print("100 in list1?",100 in list1) #迭代 for element in list1: print(element) #列表嵌套 list3 = [list1, list2] print("list3:", list3)

执行结果:

list1 + list2: [1, 2, 3, 4, 5, 6, 'BeiJin', 7, 8] list1*2: [1, 2, 3, 4, 1, 2, 3, 4] 3 in list1? True 100 in list1? False 1 2 3 4 list3: [[1, 2, 3, 4], [5, 6, 'BeiJin', 7, 8]]

ջ

在上面“列表”小节中,我们介绍了列表,其中列表有两个内建函数:
1. append(obj):添加元素到列表尾部;
2. pop():从列表尾部取出元素。
不难理解,通过 append(obj) 函数最后添加的元素,可以通过 pop() 函数最先取出来,也
就是“后进先出”,这种数据结构称为“栈”。利用列表的两个内建方法,很容易实现“栈”这
种数据结构。

#初始化一个栈 stack1 = [1, 2, 3, 4, 5 ] #向栈中添加元素 stack1.append(123) print("stack1:",stack1) #从栈中删除一个元素,及删除的是最后一个元素 print("stack1.pop():",stack1.pop())

执行结果:

stack1: [1, 2, 3, 4, 5, 123] stack1.pop(): 123

好了,就到这里了,有许多不足之处还请见谅

顺便附上我的GitHub:https://github.com/Booboochen,点进去了,别忘了star奥

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!