1变量
变量就是一个名字,标签。通过变量就可以找到对应的数据。
2创建一个变量
python的变量无需声明,只需一次赋值就可以成功创建:
x = 3
这样就创建了一个变量,名字叫x ,数值为3
这个 = ,表示一个赋值操作,也就是将右边的数值3跟变量x挂钩
3访问一个变量
当一个变量被创建后,使用变量名就可以访问变量了:
print(x)
3
4变量名
变量名,通常是由字母,数字和下划线(_)构成,但千万不能以数字打头,比如loveyou_1314是合法的,但是1314_loveyou是非法的。
另外变量名区分大小写,Fishc与fishc是两个变量
5字符串(' ')
python有许多字符串的编写方式,主要有‘ ‘," ".“ ””““ ”,
print('I love china')
I love china
6字符串(" " )
print("I love china")
I love china
7转义字符
8原始字符串
使用原始字符串可以避免(\)被当做转义字符解析(就是在前面加上一个r):
>>> 未使用原始字符串
>>> print("D:\three\two\one\now")
D: hree wo\one
ow
>>> # 使用原始字符串
>>> print(r"D:\three\two\one\now")
D:\three\two\one\now
9字符串(""" """)
使用三引号字符串可以引用多行文本:
>>> poetry = """
面朝大海,春暖花开
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
"""
10字符串的加法和乘法
字符串的相加就是拼接,形成一个新的字符串
>>> '520' + '1314'
'5201314'
还可用*号进行复制
比如要打印(每天爱你三千遍)
print("每天爱你三千遍 \n" * 3000)
11数字类型
python的数字类型一共有三种整型,浮点型和负数
12整数
python的整数长度是不受限制的,可以进行无限的精度运算
>>> 1112234579121621 / 11235813213455
98.99012719343793
13浮点数
浮点数就是小数,由于浮点数在计算机存储是存在误差的,有时候可能会有bug
>>> 0.1 + 0.2
0.30000000000000004
14精确计算浮点数
这里我们需要用一个decimal模块
>>> import decimal
>>> a = decimal.Decimal('0.1')
>>> b = decimal.Decimal('0.2')
>>> print(a + b)
0.3
15E记法
E记法就是科学计数法
>>> x = 0.00005
>>> x
5e-05
16复数
负数包含一个实部一个虚部
>>> 1 + 2j
(1+2j)
复数都是以浮点数的形式存放的,最后将复数值赋值给一个变量x则可以通过x.real访问实部和x.imag访问虚部
>>> x = 1 + 2j
>>> x.real
1.0
>>> x.imag
2.0
17数字运算
18四则运算
>>> 1 + 2
3
>>> 1 - 2
-1
>>> 1 * 2
2
>>> 1 / 2
0.5
19地板除
取比目标小的最大整数
>>> 3 // 2
1
>>> -3 // 2
-2
20取余
用来求两数相除的余数,如果能整除则余数为0
>>> 3 % 2
1
>>> 6 % 2
0
21divmod()函数
python里有一个内置函数叫divmod(),作用就是qiuchu两个参数的地板除和余数的结果
>>> divmod(3, 2)
(1, 1)
>>> divmod(-3, 2)
(-2, 1)
22abs()函数
abs()函数作用是返回指定数值的绝对值.
>>> x = -520
>>> abs(x)
520
>>> y = -3.14
>>> abs(y)
3.14
如果传入的是一个复数,abs()函数返回的结果就是复数的摸:
>>> z = 1 + 2j
>>> abs(z)
2.23606797749979
23int(),float(),complex()函数
int函数是将指定值转换成整数,比如我们传入一个字符串('520')
>>> int('520')
520
如果是一个小数,则将小数部分直接去除
>>> int(3.14)
3
>>> int(9.99)
9
float()和complex()函数功能同样的原理
24pow()函数和**幂运算符
>>> pow(2, 3)
8
>>> 2 ** 3
8
>>> pow(2, -3)
0.125
>>> 2 ** -3
0.125
pow()支持三个参数.第三个参数将结果进行取余运算
>>> pow(2, 3, 5)
3
23布尔类型
布尔类型的值只有两个 Ture 或False
bool()函数可以直接给出Ture或False结果
>>> bool(250)
True
>>> bool("假")
True
>>> bool("False")
True
24逻辑运算符
25运算符优先级
26分支结构
python的分支结构由if语句实现
(1判断一个条件成立,就执行某条语句
if 条件:
某条语句或某个代码块
(2)先判断if条件如果不成立则执行else语句
if 条件:
某条语句或某个代码块
else:
某条语句或某个代码块
(3)多个条件判断
if 第1个条件:
某条语句或某个代码块
elif 第2个条件:
某条语句或某个代码块
elif 第3个条件:
某条语句或某个代码块
(4)多个条件判断加一个else
if 第1个条件:
某条语句或某个代码块
elif 第2个条件:
某条语句或某个代码块
elif 第3个条件:
某条语句或某个代码块
else:
某条语句或某个代码块
(5)分支结构嵌套
>>> age = 18
>>> isMale = True
>>> if age < 18:
... print("抱歉,未满18岁禁止访问。")
... else:
... if isMale:
... print("任君选购!")
... else:
... print("抱歉,本店商品可能不适合小公举哦~")
任君选购!
27循环结构
python有两种循环语句:while和for
(1)while循环
while 条件:
某条语句或某个代码块
死循环
>>> while True:
... print("作为一段没有灵魂的代码,我的任务就是不断地干活!")
break语句
在循环体内,一旦遇到 break 语句,Python 二话不说马上就会跳出循环体,即便这时候循环体内还有待执行的语句。
continue语句
实现跳出循环体还有另外一个语句,那就是 continue 语句。continue 语句也会跳出循环体,但是,它只是跳出本一轮循环,它还会回到循环体的条件判断位置,然后继续下一轮循环(如果条件还满足的话)。
注意它和 break 语句两者的区别:
continue 语句是跳出本次循环,回到循环的开头
break 语句则是直接跳出循环体,继续执行后面的语句
for循环
for 变量 in 可迭代对象:
某条语句或某个代码块
什么是可迭代对象?
所谓可迭代对象,就是指那些元素能够被单独提取出来的对象。比如我们学过的字符串,它就是一个可迭代对象。
什么叫迭代呢?
比如说让你每一次从字符串 "FishC" 里面拿一个字符出来,那么你依次会拿出 'F'、'i'、's'、'h'、'C' 五个字符,这个过程我们称之为迭代。
range()
range() 会帮你生成一个数字序列,它的用法有以下三种:
range(stop) - 将生成一个从 0 开始,到 stop(不包含)的整数数列
range(start, stop) - 将生成一个从 start 开始,到 stop(不包含)的整数数列
range(start, stop, step) - 将生成一个从 start 开始,到 stop(不包含)结束,步进跨度为 step 的整数数列
注意:无论你使用哪一种,它的参数都只能是整数。
28列表
1创建列表
创建一个列表非常简单,我们只需要使用中括号,将所有准备放入列表中的元素给包裹起来,不同元素之间使用逗号分隔:
>>> rhyme = [1, 2, 3, 4, 5, "上山打老虎"]
>>> print(rhyme)
[1, 2, 3, 4, 5, '上山打老虎']
2访问列表中的元素
如果希望按顺序访问列表的每一个元素,可以使用 for 循环语句:
>>> for each in rhyme:
... print(each)
...
1
2
3
4
5
上山打老虎
如果希望随机访问其中一个元素,那么可以使用下标索引的方法:
>>> rhyme[0]
1
>>> rhyme[2]
3
>>> rhyme[5]
'上山打老虎'
3. 下标索引
4. 列表切片
>>> rhyme[0:3]
[1, 2, 3]
>>> rhyme[3:6]
[4, 5, '上山打老虎']
>>> rhyme[:3]
[1, 2, 3]
>>> rhyme[3:]
[4, 5, '上山打老虎']
>>> rhyme[:]
[1, 2, 3, 4, 5, '上山打老虎']
>>> rhyme[0:6:2]
[1, 3, 5]
>>> rhyme[::2]
[1, 3, 5]
>>> rhyme[::-2]
['上山打老虎', 4, 2]
>>> rhyme[::-1]
['上山打老虎', 5, 4, 3, 2, 1]
5向列表中添加数据
向列表中添加元素append(),功能是列表的末尾添加指定的元素,但是只能添加一个元素
>>> heros.append("黑寡妇")
>>> heros
['钢铁侠', '绿巨人', '黑寡妇']
extend()方法允许一次性添加多个元素
>>> heros.extend(["鹰眼", "灭霸", "雷神"])
>>> heros
['钢铁侠', '绿巨人', '灭霸', '黑寡妇', '鹰眼', '灭霸', '雷神']
insert()方法允许在列表任何位置添加数据
insert()方法有两个参数.第一个参数指定是插入的位置,第二个参数指定的是插入的元素
>>> s = [1, 3, 4, 5]
>>> s.insert(1, 2)
>>> s
[1, 2, 3, 4, 5]
6删除列表中的元素
利用remove方法,可以将列表中指定的元素删除
>>> heros.remove("灭霸")
>>> heros
['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']
这里有两点要注意的:
如果列表中存在多个匹配的元素,那么它只会删除第一个
remove() 方法要求你指定一个待删除的元素,如果指定的元素压根儿不存在,那么程序就会报错
pop()方法这个参数其实是可选的,如果没有选择参数,则默认弹出最后一个参数
>>> heros.pop()
'雷神'
>>> heros
['钢铁侠', '绿巨人', '鹰眼', '灭霸']
clear()方法可以一步清空列表
>>> heros.clear()
>>> heros
[]
7修改元素
用下标索引的方法,使用赋值运算符将新的替换进去
>>> heros = ['蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']
>>> heros[4] = "钢铁侠"
>>> heros
['蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼', '钢铁侠', '雷神']
修改多个可以用切片实现
>>> heros[3:] = ["武松", "林冲", "李逵"]
>>> heros
['蜘蛛侠', '绿巨人', '黑寡妇', '武松', '林冲', '李逵']
8排序与翻转
sort()实现从小到大排列,reverse()实现从大到小排列
>>> nums = [3, 1, 9, 6, 8, 3, 5, 3]
>>> nums.sort()
>>> nums
[1, 3, 3, 3, 5, 6, 8, 9]
>>> nums.reverse()
>>> nums
[9, 8, 6, 5, 3, 3, 3, 1]
9定位列表中的元素
count()可以知道列表里有多少个选定元素
>>> nums.count(3)
3
index()可以知道元素对应的索引值
>>> nums.count(3)
3
index()有两个可选的参数--start and end 查找初始位置和结束位置
>>> nums.index(3, 1, 7)
5
列表中还有一个方法copy()用于拷贝一个列表:
>>> nums_copy1 = nums.copy()
>>> nums_copy1
[3, 1, 9, 6, 8, 3, 5, 3]
也可以用切片的语法进行拷贝
>>> nums_copy2 = nums[:]
>>> nums_copy2
[3, 1, 9, 6, 8, 3, 5, 3]
以上都是浅拷贝
深拷贝
import copy
>>> x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> y = copy.deepcopy(x)
>>> x[1][1] = 0
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
1列表推导式
将以上代码写为列表推导式
>>> oho = [1, 2, 3, 4, 5]
>>> for i in range(len(oho)):
... oho[i] = oho[i] * 2
>>> oho = [1, 2, 3, 4, 5]
>>> oho = [i * 2 for i in oho]
2基础语法
列表推导式的基础语法如下:
[expression for target in iterable]
3处理矩阵
利用列表推导式处理矩阵,将矩阵的第二列元素提取出来
>>> matrix = [[1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]]
>>> col2 = [row[1] for row in matrix]
>>> col2
[2, 5, 8]
获取矩阵对角线上的元素获取
>>> diag = [matrix[i][i] for i in range(len(matrix))]
>>> diag
[1, 5, 9]
4带条件筛选功能的列表推导式
列表推导式其实还可以添加一个用于筛选的 if 分句,完整语法如下:
[expression for target in iterable if condition1]
5多层嵌套的列表推导式
[expression for target1 in iterable1
for target2 in iterable2
...
for targetN in iterableN]
每层嵌套还可以附带一个用于条件筛选的 if 分句:
[expression for target1 in iterable1 if condition1
for target2 in iterable2 if condition2
...
for targetN in iterableN if conditionN]