第一节 Python基础-表达式
Python表达式是值,变量和运算符组成的一行代码。单独的一个值是一个表达式,单独的变量也是一个表达式。
注释:
- 作用:给人看的
- 方式:
- 行注释:语句前加“#”
- 块注释: 以三个连续单引号或双引号开始和结束
变量:
- 定义:以某一名称定义的可以改变数值的一个量
- 变量命名规则:由数字、字母、下划线组成,不能为关键字/保留字或以数字开头
- 大驼峰:由英文单词组成,每个单词首字母大写,例: MyFirstLove
- 小驼峰:首字母小写,其他同大驼峰,例:myFirstLove
- posix写法:由英文单词组成,全部小写,单词之间用下划线隔开
- 关键字或保留字:[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
- 变量的声明:直接赋值,无需声明变量类型,区分于Java,例:
var_name = 1
var1 = var2 = var3 = 2
var1, var2, var3 = 3, 4, 5
- 变量的数据类型:
- 数字类型Number
- 整数:没小数,二进制(b)、八进制(o)、十进制、十六进制(x)等
- 浮点数:有小数,注意:科学记数法也是浮点数,例:3.14e2=314
- 布尔值Boolean:只有两个值:True、False
- 布尔值作为数字时:True=1、False=0
- 数字作为布尔值时:非0为True、0为False
- 字符串类型str:用单引号,双引号,三个双引号引起来
- 单引号与双引号引起来的是单行字符串,例:
s1 = ‘I Love You’
s2 = “I Love You”
- 三个双引号引起来的是多行字符串
s3 = “””
床前明月光
疑是地上霜
“””
- 复数complex: 由实部和虚部构成的数字,虚部用j/J表示 ,例:5+4j
- 列表list:例:[1,2,3,4]
- 序列中每个元素都分配一个数字作为其索引,从0开始
- 序列都可以根据索引访问、切片、加、乘、检查成员是否存在以及遍历
- 列表函数&方法:
函数 | 描述 |
len(list) | 列表元素个数 |
max(list) | 返回列表元素最大值 |
min(list) | 返回列表元素最小值 |
list(seq) | 将元组转换为列表 |
方法 | 描述 |
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 对原列表进行排序 |
list.clear() | 清空列表 |
- 元组tuple:例:(1,2,3,4)
- Python 的元组与列表类似,不同之处在于元组的元素不能修改
- 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
- 元组的元素不能修改,但是不同元组可以拼接
- 元组的元素不能删除,但可以使用del1语句删除整个元组
- 元组可以根据索引访问、切片、加、乘、检查成员是否存在以及遍历
- 元组内置获取长度、最大值、最小值,将列表转为元组的方法
- 集合set:例:{1,2,3,4}
- 集合无序,无重复
- 集合的内置方法:
方法 | 描述 |
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
- 范例:
#以集合为例
sa = {1,2,1,2,11,22,33}
print(sa) #观察与输入的有什么区别
if 33 in sa: #判断元素是否在集合中
print("33在集合sa中")
for i in sa: #遍历集合
print(i)
#以列表为例
s = [1,2,3,4,1,2]
print(s)
lsa = [i for i in s]
lsb = [i for i in s if i % 2 == 0]
lsc = [i**2 for i in s]
lsd = [i**2 for i in s if i % 2 == 0]
print(lsa)
print(lsb)
print(lsc)
print(lsd)
ta = [1,2,3,4,5]
tb = ["a","b","c","d","e"]
print(type(ta)) #打印ta的类型
print(ta[1]) #根据下标访问元素
print(ta[2:]) #从下标为2的元素开始打印到最后一个元素
print(ta[:2]) #从第一个元素开始打印到下标为1的元素
print(ta[1::2]) #从下标为1的元素开始每隔一个打印一个
print(ta[-1::-1]) #从最后一个元素开始倒着打印出来
print(ta + tb) #合并两个列表
print(ta * 3) #将列表中的元素后面再拼接2个
- 输出结果为:
{33, 2, 11, 1, 22}
33在集合sa中
33
2
11
1
22
[1, 2, 3, 4, 1, 2]
[1, 2, 3, 4, 1, 2]
[2, 4, 2]
[1, 4, 9, 16, 1, 4]
[4, 16, 4]
<class 'list'>
2
[3, 4, 5]
[1, 2]
[2, 4]
[5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
- 字典 dict:例:{1 : “a”, 2 : “b”, 3 : “c”, 4 : “d”}
- 字典由键值对构成,键值之间用“:”分隔,键值对之间用“,”分隔
- 可以根据键访问,修改,删除对应的值
- 值可以是任意类型,也可以重复;键不可以重复,不能改变
- 主要方法:
dict = {1 : "a", 2 : "b", 3 : "c", 4 : "d"}
print(dict[1]) #访问
dict[2] = "B" #修改某键对应的值
dict["b"] = "NewEle" #添加键值对
del dict[4] #删除某个键值对
- 转义字符:
转义字符 | 作用描述 |
\ | 续行符 |
\ | 反斜杠符号() |
\’ | 单引号 |
\” | 双引号 |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
\a | 响铃 |
\b | 退格 |
\000或\0 | 空 |
\v | 纵向制表符 |
\f | 换页 |
\0yy | yy是两个八进制数,\012表示换行 |
\xyy yy | 是两个十六进制数,\x0a表示换行 |
\other | other是除以上列举的其它字符,其它字符则以普通格式输出 |
- 字符串格式化输出,有两种方法:
- 利用百分号(%),例:
print(“我今年%d岁了”%18)
print(“I love %s”%”you”)
print(“我今年%d岁了,我在%s上学”%(18,”加利敦大学”))
- 利用format函数 , 以{}代替%号,后面用.format带参数完成,例:
print(“查看以下数字:{0},{1},{2},{1},{0}”.format(1,2,3))
- 常用占位符:
符号 | 意思 |
%s | 字符串 |
%d / %i | 十进制整数 |
%u | 过时的十进制使用方法 |
%o | 八进制整数 |
%x / %X | 十六进制整数 |
%f / %F | 浮点数 |
%e / %E | 科学技术法 |
%% | 输出% |
运算符:
- 算数运算符:进行算术运算,注意:没有自增自减
运算符 | 描述 |
+ | 加 – 两个对象相加 |
– | 减 – 得到负数或是一个数减去另一个数 |
* | 乘 – 两数相乘或返回一个被重复若干次的字符串 |
/ | 除 – x 除以 y |
% | 取模 – 返回除法的余数 |
** | 幂 – 返回x的y次幂 |
// | 取整除 – 向下取接近商的整数 |
- 比较或者关系运算符:
运算符 | 描述 |
== | 等于 – 比较对象是否相等 |
!= | 不等于 – 比较两个对象是否不相等 |
> | 大于 – 返回x是否大于y |
< | 小于 – 返回x是否小于y |
>= | 大于等于 – 返回x是否大于等于y |
<= | 小于等于 – 返回x是否小于等于y |
- 赋值运算符:
运算符 | 描述 | 实例 |
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c – a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
- 逻辑运算符: (存在短路问题)
运算符 | 逻辑表达式 | 描述 |
and | x and y | 布尔”与” – 如果 x 为 False,x and y返回 False,否则它返回 y 的计算值。 |
or | x or y | 布尔”或” – 如果 x 是 True,它返回 x的值,否则它返回 y 的计算值。 |
not | not x | 布尔”非” – 如果 x 为 True,返回 False。如果 x 为 False,它返回 True。 |
- 位运算符:(用的不多)
运算符 | 描述 | 实例 |
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。 | ~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
- 成员运算符:
运算符 | 描述 |
in | 如果在指定的序列中找到值返回 True,否则返回 False。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
- 身份运算符 :
运算符 | 描述 |
is | is 是判断两个标识符是不是引用自一个对象 ,如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象, 如果引用的不是同一个对象则返回结果 True,否则返回 False |
- 运算符优先级:
运算符 | 描述 |
** | 指数 (最高优先级) |
~ + – | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ – | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |