Python基本语法
数字
数字类型
- 整数(int)
- 浮点数(float)
- 复数(complex)
数学函数
使用数学函数需要导入math模块,常见的数学函数如下:
- math.ceil(x):返回大于或等于x的最小整数
- math.floor(x):返回小于或等于x的最大整数
- math.sqrt(x):返回x的平方根
- math.pow(x, y):返回x的y次方
- math.exp(x):返回e的x次方
- math.log(x):返回x的自然对数
- math.log10(x):返回x的以10为底的对数
- math.sin(x):返回x的正弦值
- math.cos(x):返回x的余弦值
- math.tan(x):返回x的正切值
- math.asin(x):返回x的反正弦值
- math.acos(x):返回x的反余弦值
- math.atan(x):返回x的反正切值
- math.degrees(x):将弧度转换为角度
- math.radians(x):将角度转换为弧度
数学常量
- math.pi:圆周率
- math.e:自然常数e
随机数
Python提供了random模块,可以生成随机数。
- random.random():返回0.0到1.0之间的随机浮点数
- random.randint(a, b):返回a和b之间的随机整数
- random.choice(seq):从序列seq中随机选择一个元素
- random.shuffle(seq):将序列seq随机打乱
- random.sample(seq, k):从序列seq中随机选择k个不重复的元素
字符串
字符串str是不可变序列,可以用单引号或双引号括起来,也可以用三引号括起来表示多行字符串。
s = 'hello, world'
s = "hello, world"
s = '''hello,
world'''
字符串访问
字符串可以用索引访问,索引从0开始,可以用负数索引从末尾开始。
s = 'hello, world'
print(s[0]) # h
print(s[-1]) # d
字符串切片
- 字符串也可以用切片操作,语法为
s[start:end:step]
,其中start是切片开始的索引,end是切片结束的索引(不包含),step是切片的步长,默认为1,负数表示逆序切片。 - 切片遵循“左闭右开”原则,即左边的索引是包含在切片中的,右边的索引是不包含的。
s = 'hello, world'
print(s[0:5]) # hello
print(s[6:11]) # world
print(s[::2]) # hlowrd
# 将字符串逆序
print(s[::-1]) # dlrow ,dlrowolleh
字符串拼接
字符串可以用加号拼接,由于字符串是不可变序列,所以拼接操作不会改变原有字符串,而是返回一个新的字符串。
s1 = 'hello'
s2 = 'world'
s3 = s1 + s2
print(s3) # helloworld
字符串方法
字符串有很多方法可以进行操作,常见的有:
- s.lower():将字符串转换为小写
- s.upper():将字符串转换为大写
- s.startswith(str):判断字符串是否以str开头
- s.endswith(str):判断字符串是否以str结尾
- s.find(str):查找字符串str第一次出现的位置,找不到返回-1
- s.replace(old, new):将字符串old替换为字符串new
- s.split(str):以str为分隔符将字符串分割为列表
- s.join(seq):以字符串seq中的元素为分隔符,将列表seq连接为字符串
- s.isdigit():判断字符串是否只包含数字
- s.isalpha():判断字符串是否只包含字母
- s.isalnum():判断字符串是否只包含字母或数字
- s.isspace():判断字符串是否只包含空白字符
转义字符
在字符串中,有些字符是有特殊含义的,比如\n
表示换行,\t
表示制表符,\r
表示回车,\b
表示退格,\f
表示换页。如果要在字符串中使用这些字符,需要用\
转义。
s = 'hello, world\n'
print(s) # 会换行显示
原始字符串
原始字符串(raw string)是以r
开头的字符串,它的特殊之处在于它会忽略所有的转义字符,也就是说,它不会将\n
等转义字符转换为换行符。
s = r'hello, world\n'
print(s) # 不会换行显示,原始字符串会原样输出
字符串格式化
字符串格式化(string formatting)有两种方式,一种是用%
运算符,一种是用format()
方法。
%
运算符
使用%
运算符格式化的方式与C语言中的printf()
函数类似,可以用%d
、%f
、%s
等表示整数、浮点数、字符串。
常见的格式化符号如下:
%d
:整数%f
:浮点数%s
:字符串%x
:十六进制整数%o
:八进制整数%e
:科学计数法表示的浮点数
print('pi is %.2f' % 3.1415926) # pi is 3.14)
print('hello, %s' % 'world') # hello, world
format()
方法
使用format()
方法格式化的方式更加灵活,可以指定位置参数和关键字参数。
- 位置参数:使用
{}
表示位置参数,从左到右依次对应位置参数。 - 关键字参数:使用
{key}
表示关键字参数,key是参数名,从左到右依次对应关键字参数。
print('pi is {:.2f}'.format(3.1415926)) # pi is 3.14
name = 'world'
print('hello, {}'.format(name)) # hello, world
f-string
f-string(formatted string literal)是Python 3.6中新增的字符串格式化方式,可以直接在字符串中嵌入变量,语法为f'xxx{var}xxx'
。
name = 'world'
print(f'hello, {name}') # hello, world
列表
列表list是可变序列,可以用方括号括起来,元素之间用逗号隔开。
l = [1, 2, 3, 4, 5]
列表的访问、切片、拼接与字符串类似。
列表方法
列表有很多方法可以进行操作,常见的有:
- l.append(obj):在列表末尾添加元素
- l.extend(seq):在列表末尾添加序列seq中的元素
- l.insert(i, obj):在列表索引i处插入元素obj
- l.remove(obj):删除列表中第一个出现的元素obj
- l.pop(i):删除列表索引i处的元素,并返回该元素
- l.index(obj):返回列表中第一个出现的元素obj的索引
- l.count(obj):返回列表中元素obj出现的次数
- l.sort():对列表进行排序
- l.reverse():将列表逆序
- l.clear():清空列表
元组
元组tuple是不可变序列,可以用圆括号括起来,元素之间用逗号隔开。
t = (1, 2, 3, 4, 5)
元组的访问、切片、拼接与字符串类似。
字典
字典dict是无序的键值对集合,可以用花括号括起来,键值对之间用冒号隔开,键和值用逗号隔开。
d = {'name': 'Alice', 'age': 20, 'city': 'Beijing'}
字典访问
字典可以用键访问值,也可以用get()
方法访问值。
print(d['name']) # Alice
print(d.get('age')) # 20
添加、修改字典
字典可以用[]
或update()
方法添加或修改键值对。
d['gender'] = 'female'
d.update({'age': 21})
字典删除
字典可以用del
语句删除键值对,也可以用pop()
方法删除键值对。
del d['age']
d.pop('city')
字典方法
字典有很多方法可以进行操作,常见的有:
- d.keys():返回字典所有键的列表
- d.values():返回字典所有值的列表
- d.items():返回字典所有键值对的列表
- d.get(key):返回字典中键key对应的值,如果不存在,返回None
- d.pop(key):删除字典中键key对应的值,并返回该值
- d.popitem():随机删除字典中的一对键值对,并返回该对键值对
- d.update(other):更新字典,将other中的键值对添加到字典中
- d.clear():清空字典
集合
集合set是无序的元素集合,可以用{}
或set()
函数创建。
s = {1, 2, 3, 4, 5}
空集合
空集合可以用set()
函数创建,不能用{}
创建,因为{}
表示空字典。
s = set()
集合方法
集合有很多方法可以进行操作,常见的有:
- s.add(obj):添加元素obj到集合
- s.remove(obj):删除集合中第一个出现的元素obj
- s.pop():随机删除集合中的一个元素,并返回该元素
- s.union(other):返回两个集合的并集
- s.intersection(other):返回两个集合的交集
- s.difference(other):返回两个集合的差集
- s.symmetric_difference(other):返回两个集合的对称差集
- s.issubset(other):判断集合是否是other的子集
- s.issuperset(other):判断集合是否是other的超集
- s.clear():清空集合