python笔记 11-13 (列表方法)

List.index(object,start,stop) 查询object 在list中第一次出现的索引号,如果object不存在则报错。Strat ,stop不写的话默认从list从开始到结尾
List.cout(object) ,object 在列表中出现的次数
List.copy 赋值列表
Len(list) 列表的长度
List.sort(self, key=None, reverse=False) 列表排序,默认是从小到大,若reverse=true则从大到小。注意:sout内对象类型要一致(ascii码中’5’>’A’>’a’)
注意:列表下标是从0开始
###
print(C[:])
print(C[0:]) 从第一个元素开始遍历
print(C[1:]) 从第二个元素开始遍历
都是遍历列表的意思

加:A = [“1”,”2”,”3”,”4”,”5”]
B=[“A”,”B”]
C = A + B
C : [“1”,”2”,”3”,”4”,”5”, “A”,”B”]
乘法: A = [None] * 10
A: [None, None, None, None, None, None, None, None, None, None]

a = []
a[0] = 5
print(a)
Traceback (most recent call last):
File “E:/project/temp.py”, line 23, in
a[0] = 5
IndexError: list assignment index out of range
原因:a定义的是空列表,其长度为0,第二行a[0] = 5,是修改数值,不是增加列表项目,所以报错,列表的索引超出范围
a = [[1, 2, 3], [4, 5, 6],[6, 7, 9]]
for i, j, k in a:
print(i, j, k)

二维或二维混合列表遍历方法:
a = [[1, 2, 3], [4, 5, 6, 7, 8], 9]
for i in a:
if type(i) == list:
for j in i:
print(j)
else:
print(i)
遍历非同等长度的二级列表
列表 = [[值1,值2],[值1,值2,值3],[值]…]
for 变量1 in 列表:
for 变量2 in 变量1:
使用变量2(变量2是二级列表中的每个值)

a = [[1, 2], [4, 5, 6], [6]]
for i in a:
for j in i:
print(j)

列表推导式:( https://www.cnblogs.com/tkqasn/p/5977653.html)
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,
基本格式
variable = [out_exp_res for out_exp in input_list if out_exp == 2]
out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
if out_exp == 2:  根据条件过滤哪些值可以。
简单的列表推导式
格式:[变量 for 变量 in 列表]
结果:遍历列表中的每个值,将每个值获取之后组成新的列表,可以对获取的值进行修改
[变量可以其他操作 for 变量 in 列表]

带有判断条件的列表推导式
格式:[变量 for 变量 in 列表 if 条件表达式]
结果:遍历列表中的每个值,根据判断条件决定是否取出指定的值组成新的列表,可以对获取的值进行修改

多个列表的同时循环的列表推导式
格式:[变量1+变量2 for 变量1 in 列表1 for 变量2 in 列表2]
结果:同时遍历列表1和列表2中的每个值,将列表1中的每个值和列表2中的每个值进行运算得到新的列表新的列表中元素个数=列表1中元素个数 * 列表2中的元素个数
变量1和变量2可以进行其他操作,不一定非要+ 这只是demo

带有判断条件的多个列表的同时循环列表推导式

格式:[变量1+变量2 for 变量1 in 列表1 for 变量2 in 列表2 if 条件表达式]
结果:同时遍历列表1和列表2中的每个值,根据判断条件将列表1中的值和列表2中的值进行运算,得到新的列表
新的列表数量由判断条件决定

Eg: 实现99乘法表(使用列表推导式实现99乘法表中的每个运算)
print(’\n’.join([’ '.join("{} * {} = {}".format(j, i, j * i) for j in range(1, i + 1, 1))for i in range(1, 10, 1)]))
重点理解:"{} * {} = {}"的左边和j in range(1, i + 1, 1)的右边分别加了一个’(’’)’里面作为一个表达式,for后面对i的迭代 生成器!
详细:https://blog.csdn.net/yzxnuaa/article/details/79206930
补充:列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。
[xy for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
执行顺序:
for x in range(1,5)
if x > 2
for y in range(1,4)
if y < 3
x
y
补充:
a = [i for i in range(101) if not (i % 2 == 1) and i % 3] # 0~100中能被2整除,不能被3整除的数

enumerate() 函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
enumerate(sequence, [start=0])

猜你喜欢

转载自blog.csdn.net/weixin_42970234/article/details/84023171