Python教程

Python语法基础

本文主要是介绍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语法基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!