Python语法基础
2022/2/24 1:21:27
本文主要是介绍Python语法基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1_序列list、tuple、str的通用操作
- 2_ list与tuple的常用操作
- 3_str的常用操作与正则表达式
1_序列list、tuple、str的通用操作
#判断某值是否在序列中,在则返回True,否则返回False lst = [-0.5,-2,3.5,4,('good')] a,b = -2,('good') print(a in lst) print(b in lst)
# "+":连接两个序列; "*":重复序列 tup1 = (1,[2,3]) tup2 = ('a','b',('c','d')) print(tup1+tup2) print(tup1*3,tup2*2) (1, [2, 3], 'a', 'b', ('c', 'd')) (1, [2, 3], 1, [2, 3], 1, [2, 3]) ('a', 'b', ('c', 'd'), 'a', 'b', ('c', 'd'))
# 下标索引:索引从0开始,访问不能越界,特别注意,索引-1代表序列中最后一个元素 lst = [1,'Hello',3,' World!!!',5,[6,7],8.95] print(lst[2],lst[5]) # lst[2]中,下标索引是2,指向lst的第3个值 print(type(lst[1]),type(lst[5])) print(lst[-1]) 3 [6, 7] <class 'str'> <class 'list'> 8.95
# 切片:获取序列的区间中个元素值。特别注意,它是一个左闭右开区间[ )。 tup = (1,'Hello',3,' World!!!',5,6,7,8.95) print(tup[2:6]) # 索引2的值 - 索引5的值 print(tup[:5]) # 左边索引不带标记,表示从索引0开始 print(tup[4:]) # 右边索引不带标记,表示以最后一个值结束 print(tup[5:-1]) # 索引号5的元素值 - 序列中倒数第二个值。因为右是开区间 print(type(tup[0]),type(tup[:2]))#经常记得用type查看数据类型 str1='中华人民共和国' print(str1[0:2]) (3, ' World!!!', 5, 6) (1, 'Hello', 3, ' World!!!', 5) (5, 6, 7, 8.95) (6, 7) <class 'int'> <class 'tuple'> 中华
# 步长:序列[i:j:n]表示索引i - 索引j,以n为步长的序列值 tup = (0,1,2,3,4,5,6,7,8,9) print(tup[::2]) # 以2为步长,从索引号0 - 序列尾的元素值 print(tup[1::2])# 以2为步长,从索引号1 - 序列尾的元素值 (0, 2, 4, 6, 8) (1, 3, 5, 7, 9)
# 序列基本内置全局函数 tup = (1,'Hello',3,' World!!!',[5,6,7],8.95,3) print(len(tup)) # 序列元素个数 print(tup.count(' World!!!'))#.count(obj)方法:计算obj在序列中的出现次数 print(tup.count(5)) print(tup.count([5,6,7])) print(tup.index(3)) # .index(obj)方法:返回序列中obj第一个匹配项的索引位置。如果序列中无匹配项,则出错 lst = [1,2,3,4,5,6,7,8,9,0] print(max(lst),min(lst),sum(lst)) # 返回序列中的最大值、最小值及和。注意,这三个函数仅对数字序列有效 str1=''' 中华人民共和国(the People's Republic of China),简称“中国”,成立于1949年10月1日 , 位于亚洲东部,太平洋西岸,是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家, 以五星红旗为国旗、《义勇军进行曲》为国歌,国徽内容为国旗、天安门、齿轮和麦稻穗, 通用语言文字是普通话和规范汉字,首都北京, 是一个以汉族为主体、56个民族共同组成的统一的多民族国家。 我爱中华人民共和国,I love China!!! ''' print(len(str1)) print(str1.count('中华人民共和国')) print(str1.index('国徽')) print(str1[str1.index('国徽'):str1.index('国徽')+2]) 7 1 0 1 2 9 0 45 294 2 155 国徽
Quiz: (1)x=[3,2,1,1,[1,2,3],[1,1]],请问x.count(1)为多少? (2)y=[50,67,50,50,500,212,100],请问y.index(50)等于多少? (3)以上例字符串str1为参考,挑选出1949,并用type函数判断其数据类型。
2_ list与tuple的常用操作
# 列表的特征 lst1 = [1,2,3,'a','b','c',[1,2,3]] print(lst1[-1],lst1[4:],lst1[::2]) lst2 =[[1,2,3],[4,5,6]] lst2 = lst2 * 3 # 可随意变换列表长度,相当于随意指定新的列表 print(lst2) lst3 = ['A',100,[1,2]] lst3[0] = 10 #可以原位改变任何类型值 lst3[1] = "good" lst3[2] = '(1,2)' print(lst3) [1, 2, 3] ['b', 'c', [1, 2, 3]] [1, 3, 'b', [1, 2, 3]] [[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]] [10, 'good', '(1,2)']
# 列表与生成器 print(range(5),type(range(5))) print(range(5)[2],type(range(5)[2])) #可访问range中的特定元素,元素类型为int print(range(5)[:4]) #切片数据类型是range # range语法:range(start, stop[, step]) # start: 从 start 开始计数。默认是从 0 开始。例如range(5)等价于range(0, 5); # stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 # step:步长,默认为1。例如:range(0, 5)等价于 range(0, 5, 1) lst = list(range(5)) # 通过list()函数生成列表 print(lst) range(0, 5) <class 'range'> 2 <class 'int'> range(0, 4) [0, 1, 2, 3, 4]
# 列表list常用方法操作 - 添加元素 #listname.append(object) :向列表中添加一个对象object #listname.extend(sequence) :向列表中添加一个序列sequence的内容 music_media = ['compact disc', '8-track tape', 'long playing record'] new_media = ['DVD Audio disc', 'Super Audio CD'] music_media.append(new_media) print('使用append方法添加后的结果为:%s'% music_media) music_media = ['compact disc', '8-track tape', 'long playing record'] new_media = ['DVD Audio disc', 'Super Audio CD'] music_media.extend(new_media) print('使用extend方法添加后的结果为:%s'% music_media) 使用append方法添加后的结果为:['compact disc', '8-track tape', 'long playing record', ['DVD Audio disc', 'Super Audio CD']] 使用extend方法添加后的结果为:['compact disc', '8-track tape', 'long playing record', 'DVD Audio disc', 'Super Audio CD']
# 列表list常用方法操作 - 删除元素 #listname.remove(value):根据元素值进行删除,且只会删除第一个和指定值value相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。 #listname.clear():删除列表所有元素 #listname.pop(index):根据索引值index删除元素。如果省略 index 参数,默认删除列表中的最后一个元素,类似于数据结构中的“出栈”操作。 lst = ["Python", 'R',"C++", "Java", "PHP", "Ruby", "MATLAB","R"] lst.remove('R') #remove可以拿来用 print(lst) lst = ["Python", 'R',"C++", "Java", "PHP", "Ruby", "MATLAB","R"] lst.pop() #删除lst中'R'元素, pop可以拿来用 print(lst) lst = ["Python", 'R',"C++", "Java", "PHP", "Ruby", "MATLAB","R"] lst.pop(2) #删除lst中'C++'元素 print(lst) del lst[0] #del删除不得用于别处 print(lst) lst.clear() # 清除所有值 print(lst) # 删除元素还有del语句,它可以使用切片方式删除多个元素,请同学们自己测试此语句功能 ['Python', 'C++', 'Java', 'PHP', 'Ruby', 'MATLAB', 'R'] ['Python', 'R', 'C++', 'Java', 'PHP', 'Ruby', 'MATLAB'] ['Python', 'R', 'Java', 'PHP', 'Ruby', 'MATLAB', 'R'] ['R', 'Java', 'PHP', 'Ruby', 'MATLAB', 'R'] []
# 列表list常用操作 - 插入元素 #listname.insert(position,x):在指定位置前插入对象x lst = list(range(10)) print(lst) lst.insert(3,'a') print(lst) lst = list(range(10)) lst.insert(3,[1,2,3]) print(lst) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 'a', 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, [1, 2, 3], 3, 4, 5, 6, 7, 8, 9]
# 列表list常用操作 - 修改及查找元素 lst = list(range(10)) print(lst) lst[2]='abc' lst[3]=('a','b','c') print(lst) print(lst.index('abc')) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 'abc', ('a', 'b', 'c'), 4, 5, 6, 7, 8, 9] 2
# 列表list常用操作 - 复制 lst = list(range(10)) lst1 = lst print(lst,lst1) lst1[2] = 'good' print(lst,lst1) # lst,lst1指向的是同一个列表 lst = list(range(10)) lst2 = lst.copy() print(lst,lst2) lst2[2] = 'good' print(lst,lst2) # listname.copy()方法:复制并生成一个新的列表,lst,lst2指向的是两个列表。 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 'good', 3, 4, 5, 6, 7, 8, 9] [0, 1, 'good', 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 'good', 3, 4, 5, 6, 7, 8, 9]
# 列表list常用操作 - 排序 lst1 = list(range(10)) lst2 = ["agx", "agh", "abc"] lst1.sort(reverse=True) # 参数reverse:反向排序,针对数字 print(lst1) lst2.sort() print(lst2) # 默认升序排序/字母顺序 lst2 = ["xyz", "thj", "bcd"] print(sorted(lst2)) print(lst2) # 函数sorted():排序不复制 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] ['abc', 'agh', 'agx'] ['bcd', 'thj', 'xyz'] ['xyz', 'thj', 'bcd']
#遍历列表中的索引及其对应的元素 sports=['篮球','兵乓球','羽毛球','足球'] for index, item in enumerate(sports): print(index, item) 0 篮球 1 兵乓球 2 羽毛球 3 足球
#列表推导式:使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表 #格式:[exp for item in collection if condition] lst1 = [ x*2 for x in range(10) if x>=2] print(lst1) list3 = [] for x in range(10): if x>=2: list3.append(x*2) print(list3) lst2 = [ x for x in range(100) if x % 3==0 and x>=60] print(lst2) [4, 6, 8, 10, 12, 14, 16, 18] [4, 6, 8, 10, 12, 14, 16, 18] [60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
# tuple :不可变的“列表”,虽不可变,但仍满足序列的通用操作 tup1 = ('Java', 'Python', "C++",2022, 2019) tup2 = (1, 2, 3, 4, 5) tup3 = "a", "b", "c", "d" # 可以不加括号 tup4 = (100,) # 元组中只包含一个元素时,需要在元素后面添加逗号 print(len(tup1)) print(tup1 + tup2) print(tup3+tup4 * 2) print(max(tup2),min(tup2)) # 序列通用函数 str1 = "Good Morning" tup5 = tuple(str1) # tuple()函数:将str转换为元组,也可以将将list转换为元组 print(tup5) #tup1[1] = "Ruby" # 注意:此语句有错,因为tuple不可变 5 ('Java', 'Python', 'C++', 2022, 2019, 1, 2, 3, 4, 5) ('a', 'b', 'c', 'd', 100, 100) 5 1 ('G', 'o', 'o', 'd', ' ', 'M', 'o', 'r', 'n', 'i', 'n', 'g')
Quiz: (1)range()生成的是不是都是整数? 不是 (2)x=range(4:8), x=range(4,8),哪种方式书写正确? 后者正确 (3)m=range(10),请问m[2],m[-1],m[5:8]是多少? (1)分别用append、extend方法,给一个序列增加三个元素'a' (2) list.append('abc')和list.extend('abc')的区别 (3) 创建某一列表,在列表中间进行插入、删除、查找一个值 (4)创建一个随机数值列表,按照降序排列 (5)sort()和sorted()什么区别 (6)使用range生成列表,并使用列表推导式,找出大于10的数字,存入列表
3_str的常用操作与正则表达式
# 字符串引号 str1 = "123" str2 = '123' str3 = '"Good Morning"' # 文本中有引号的时候要相互交替使用 str4 = ''' 中华人民共和国(the People's Republic of China),简称“中国”,成立于1949年10月1日 , 位于亚洲东部,太平洋西岸,是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家, 以五星红旗为国旗、《义勇军进行曲》为国歌,国徽内容为国旗、天安门、齿轮和麦稻穗, 通用语言文字是普通话和规范汉字,首都北京, 是一个以汉族为主体、56个民族共同组成的统一的多民族国家。 我爱中华人民共和国,I love China!!! ''' # 三引号 ''' ''',""" """三引号允许一个字符串跨多行,每行后有回车符‘\n’ # 转义字符:\ print('\'', '\"') # \',\" :分别输出单引号,双引号 print('Hello\nWorld!!!') # \n:空行 print('\\') # 输出\,文件路径用“/”或者“\\” print(r'\\') #不输出转义字符,前面加r ' " Hello World!!! \ \\
# 字符串常用操作 st1 = 'one two one two one' st2 = st1.replace('one','three',2) print(st1) print(st2) # str.replace(old,new,count):修改字符串,count:从开始位置起更换的个数,省略count,表示全替换 #.find(str, beg=0, end=len(string)):如果指定 beg(开始) 和 end(结束) 范围,检查是否包含在指定范围内,是返回开始的索引值,否则返回-1。 print(st1.find('two')) st1 = "http://www.xinhuanet.com/politics/xxjxs/index.htm" lst = st1.split('/') print(st1) print(lst) # str.split(obj):拆分字符串,生成列表 m = '/' st = m.join(lst) print(st) # str.join(obj):连接字符串,对象为序列 st = 'I love China!' print(st.startswith('I'), st.endswith('a!')) # str.startswith(“str”) 判断是否以“str”开头;str.endswith (“str”) 判断是否以“str”结尾 st = 'I love China!' print(st.upper()) # 全部大写 print(st.lower()) # 全部小写 print(st.swapcase()) # 大小写互换 print(st.capitalize()) # 首字母大写 st = '0123456789' print(st.isnumeric()) # 如果 string 只包含数字则返回 True,否则返回 False. st = 'abcABC123' print(st.isalpha()) # 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False #请同学们自己测试isalnum(),isalpha(),isdigit(),isspace(),islower(),isupper(),istitle()的使用方法 st = ' avd ' print(st.rstrip()) # 删除字符末尾的空格 print(st.lstrip()) # 删除字符末尾的空格 print(len(st)) # st没有改变 print(len(st.strip())) # 删除字符首末尾的空格 st1 = '#UNSG @ NY Society for Ethical Culture bit.ly/2guVelr @UN @UN_Women' st2 = st1.split(' ') print(st2,type(st2)) st3=[w for w in st2 if w.startswith('#')] # 查找以#开头的文本 print(st3,type(st3)) st4=[w for w in st2 if w.startswith('@')] # 查找以@开头的文本 print(st4) one two one two one three two three two one 4 http://www.xinhuanet.com/politics/xxjxs/index.htm ['http:', '', 'www.xinhuanet.com', 'politics', 'xxjxs', 'index.htm'] http://www.xinhuanet.com/politics/xxjxs/index.htm True True I LOVE CHINA! i love china! i LOVE cHINA! I love china! True False avd avd 7 3 ['#UNSG', '@', 'NY', 'Society', 'for', 'Ethical', 'Culture', 'bit.ly/2guVelr', '@UN', '@UN_Women'] <class 'list'> ['#UNSG'] <class 'list'> ['@', '@UN', '@UN_Women']
# 格式化字符:在字符串中插入变量 name = "小张" age=20 print( "%s年龄为:%i岁." % (name,age)) # %s:表示在字符串中插入一个字符串变量,%i表示在字符串中插入一个整型变量。%(name,age)分别代表其值 a, c = 100.655, 100.655 b = 452.3456 print("a = %.2f, b = %.3f, c = -%i" % (a, b,c)) # %f代表插入字符串的源数据类型:浮点型 d = 3.1415926*100 print("d = %.2e" % d) print("d = %.3E" % d) # 科学计数法: %e, %E e1 = 31415926535897932384626 e2 = 3.14 print("e1 = %g" % e1) print("e2 = %g" % e2) # 小数位数少的时候自动用浮点数表示,数据大的时候自动识用用科学计数法 小张年龄为:20岁. a = 100.66, b = 452.346, c = -100 d = 3.14e+02 d = 3.142E+02 e1 = 3.14159e+22 e2 = 3.14
# 正则表达式:Python处理字符串的强大工具,详细使用方法请参阅官方文档https://docs.python.org/zh-cn/3.8/library/re.html # 需引入模块re,即import re # 常用方法:re.match(pattern, string, flags=0);re.search(pattern, string, flag=0);re.findall(pattern, string [,flags]) # 常用属性:re.I: 匹配不分大小写 # compile()方法:compile(pattern, flag=0),编译正则表达式pattern,然后返回一个正则表达式对象。 # match(pattern, string, flags=0),它尝试从字符串string的起始位置匹配一个模式pattern,如果不是起始位置匹配成功的话,match() 就返回 none。 # search(pattern, string, flag=0):不从最开始匹配的,而是从任意位置查找第一次匹配的内容。如果没有匹配成功,返回None,否则返回匹配对象。 # findall(pattern, string [,flags]):查找string中出现的所有正则表达式pattern,并返回一个匹配列表,如果没匹配部分,则返回一个空列表。 #常用的匹配对象方法:group()、groups() import re #使用正则表达式需要引用re st1 = '#UNSG @ NY Society for Ethical Culture bit.ly/2guVelr @UN2a @UN_Women' st2 = re.search('@[A-Za-z0-9]+', st1) st3 = re.match('@[A-Za-z0-9]+', st1) print(st2) zprint(st3) line = "Cats are smarter than dogs" matchObj = re.match( r'(.*) are (.*?) .*', line, re.I) if matchObj: print( "matchObj.group() : ", matchObj.group()) #返回整个的匹配对象 print( "matchObj.groups() : ", matchObj.groups()) #返回一个含有所有匹配组的元组,匹配失败返回空元组 print( "matchObj.group(1) : ", matchObj.group(1)) #返回指定分组的匹配对象 print( "matchObj.group(2) : ", matchObj.group(2),type(matchObj.group(2))) else: print("No match!!") <re.Match object; span=(54, 59), match='@UN2a'> None matchObj.group() : Cats are smarter than dogs matchObj.groups() : ('Cats', 'smarter') matchObj.group(1) : Cats matchObj.group(2) : smarter <class 'str'>
Quiz: (1)以下语句输出值分别是多少:33+"22"; 33+int("22"); "22" + str(55); (2).split和.join的输出分别是什么类型的数据? (3)import re str = 'abcdabcdef ' pattern ='.*?' p = re.compile(pattern) match = re.search(p, str) print(match.group(0)) 分析其运行结果。
这篇关于Python语法基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识