第一节 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

逻辑运算符