看视频一个小时,码代码2小时。
浮点数
浮点数是有理数,不包括无理数,平时科学计数法1.37*10^13,在计算机里面就用1.37E13表示,如1299=1.299e3,
复数
复数是指能写成a+bi的数,a和b为实数,i为虚数,在python里面用 (a+bj)表示,如(1+2j),可以用来做物理和量子力学等等,
浮点数的精确度问题:
python里只能储存17位的精度(即小数16位+1位整数),同时小数数目越多精确度可能越低,浮点数所占的空间是远大于整数的,
如 1.12345678901234567 就变成了1.1234567890123457(四舍五入),
如果想使用高精度的话,需要额外引入第三方模块
数据类型--列表
1.创建列表
names = list()
names = []
两种都是创建空列表方式,[]较为常用
names = ['jack', 'nick', 123, 123, 1, 1, 2, 2, 3, 3, 3e2, [1, 2, 3]]
列表内可以放各类数据类型,包括字符串,数字,列表,等等
列表内每个元素都有一个index(索引),索引从0开始,1,2,3,4... 一直接下去,调用索引为0的元素命令为
names[0] --> 会显示 jack
names[-5] --> 会显示倒数第5个元素,
如果要查找某个元素的索引,输入
names.index('jack') --> 返回结果为0,即索引为0是'jack',
如果列表内有两个相同元素,则默认只显示排名靠前的那个元素的索引号,如此处
names.index(2) -->返回为6,而实际上6和7都是2
names[names.index(2)] --> 6
names.count('jack') --> 1
names.count(6) --> 2
切片:取列表中的第a到b个元素
names[0:3] --> ['jack', 'nick', 123],只取0,1,2这三个索引的元素,护头不护尾,实际取的是0-2的元素
names[-5:-1] --> 倒数第5个到倒数第2个
names[-5:] ,不写就是到底
names[:-5],不写就是从头开始
names[-1:-5] 或者names[2:1],都是返回空集合[]
names[0:7:n],就是取索引0-7中的0, 0+n, 0+2n... 0+an的数,n叫步长,这个动作叫切片
当然,names[0::2]也可以,从0开始到底,步长为2,即索引值为0, 2, 4, 6...到底的数都会被切片
增加:
names.append('peiqi'),在尾部增加'peiqi'
names.insert(6, 'peiqi'),在索引为6的位置插入'peiqi',插入后names[6] --> 'peiqi'
修改:
names[2] = 333,赋值就是修改
批量修改
names[2:5] = '333'
首先,批量修改的赋值只能为字符串,同时这一串里面的任意一个字符都会被分别拆开来填入其中,2-4(护头不护尾)这几个元素都会被抹除,然后将字符串里的3个‘3’、‘3’、‘3’填入其中,不够数就会导致列表元素的数量减少,多了就会导致元素数量增加,把后面的挤后面去,如果用names[8:],就会先把第9个元素以后所有元素抹除,然后插入赋值拆开的字符串,如果是names[8:7],就会在第9个元素抹除,然后插入
删除:
names.pop() 删除最后一个元素
names.remove('abc'),删除abc元素,如果有多个‘abc’,删除从左数起第一个,remove只能一个一个删
del names[2],删除索引为2的元素
del names[2:6],批量删除索引为2-5的元素
pop和remove都是names的后缀功能,因此必须定义names之后才能使用,pop删除后,返回被删除的值
del是全局性功能,可以直接 del names 来删除,可以删任意东西
循环:
names = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in names:
print(‘loop‘,i)
把names里面的每一个元素都打印。
range(0, 10)等同于
for i in range(10):
print(i)
range(10)就是生成一个0-9的列表
死循环:
while True:
while和for的区别:1. while可以是死循环,for是有边界的
排序:
names.sort(),将纯字母,或者纯数字的列表进行排序(可以加入特殊字符),混合的会报错,字母就从所有大写字母开始,然后再所有小写字母,都是A-Z排序,如果有“aA”和“bB”和“Aa”和“bC”之类的,先按第一个字母排序,第一个字母相同的,再按第二个字母排序,等等等等,特殊字符排在前面,因为都是按ASCII码表排序
倒过来:
names.reverse()
拼接:
names + name2
或者
names.extend(name2)
在names列表后面加上name2列表
清空:
names.clear()
names就变为空集合[]
复制:
names.copy()
n1 = names
names[2] = Alex
n1也改为了Alex
列表跟变量不同,n1列表指向的就是names列表,而不是names列表的值
但是如果
n1 = names.copy()
n1就独立于names了,复制了一份独立的列表,不与names相关了
# 请用代码实现: 利用下划线将列表的每一个元素拼接成字符串, li = ['alex', 'eric', 'rain']
# 查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有元素。
li = ['alex', 'eric', 'rain']
# 计算列表长度并输出
print(len(li))
# 列表中追加元素"seven",并输出添加后的列表
li.append("seven")
print(li)
li = ['alex', 'eric', 'rain']
# 请在列表的第一个位置插入元素“Tony”,并输出添加后的列表
li.insert(0, 'Tony')
print(li)
# 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
li[1] = "Kelly"
print(li)
# 请删除列表中的元素"eric",并输出修改后的列表
li.remove("eric")
print(li)
# 请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
ele_deleted = li.pop(1)
print(ele_deleted)
print(li)
# 请删除列表中的第3个元素,并输出删除元素后的列表
li = ['alex', 'eric', 'rain']
del li[2]
print(li)
# 请删除列表中的第2-4个元素,并输出删除元素后的列表
li.append("alex")
li.append("seven")
li.append("eric")
print(li)
del li[1:4]
print(li)
# 请将列表所有的元素反转,并输出反转后的列表
li = ['alex', 'eric', 'rain']
li.reverse()
print(li)
# 请使用for、len、range输出列表的索引
for i in range(len(li)):
print(i)
# 请使用enumerate输出列表元素和序号(序号从100开始)
for i, element in enumerate(li, start=100):
print(i, element)
# 请使用for循环输出列表的所有元素:
for i in range(len(li)):
print(li[i])