列表:用于存储任意数目、任意类型的数据集合。
列表是内置可变序列,是包含多个元素的有序连续的内存空间。
特点: 有序, 可变, 中括号[]
列表的标准语法格式:a = [10,20,30,40] . 其中,10,20,30,40这些称为:列表a的元素。
注意:
字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列。
前面学习的很多字符串的方法,在列表中也有类似的用法,几乎一模一样。
操作
列表的创建
使用list()可以将任何可迭代的数据转化成列表
range()创建整数列表
推导式生成列表
import random
a = [10086, 10010, 10000, "中国移动", "中国联通", "中国电信"]
b = [] # 创建一个空列表对象
print(a)
print(b)
a = list()
b = list(range(9))
c = list("中国移动,10086")
print(a)
print(b) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(c) # ['中', '国', '移', '动', ',', '1', '0', '0', '8', '6']
a = list(range(3, 15, 2)) # 结果:[3, 5, 7, 9,11, 13]
b = list(range(15, 9, -1)) # 结果:[15, 14, 13,12, 11, 10]
c = list(range(3, -4, -1)) # 结果:[3, 2, 1, 0,-1, -2, -3]
print(a, b, c)
a = [x * 2 for x in range(5)]
b = [x * 2 for x in range(100) if x % 9 == 0]
print(a, b)
列表的新增
append()方法( 速度最快, 推荐使用 )
+运算符操作 ( 生成新对象 )
extend()方法 ( 尾插, 不生成新对象 )
insert()插入元素 ( 插入到指定位置, 慎用 )
使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复
a = [20, 40] # 此列表创建可以重写为列表文字
a.append(80)
print(a) # 结果:[20, 40, 80]
a = [20, 40]
print("测试第一次时对象的引用: ", id(a))
a = a + [50]
print("测试第二次时对象的引用: ", id(a)) # 两次地址不一样,创建了新的对象
a = [20, 40]
print(id(a))
b = [50, 60]
a.extend(b) # 原对象修改
print(id(a), a)
a = a + b # 产生新对象
print(id(a), a)
a = [10, 20, 30]
a.insert(2, 100) # 在2号下标位置(起点为0)放入100
print(a) # 结果:[10, 20, 100, 30]
a = ["托尼斯塔克", "爱你三千遍"]
d = a * 30 # 3000是在太多了...
print(a)
print(d)
列表的删除:
del() 删除列表指定位置的元素
pop()删除并返回指定位置元素
删除首次出现的指定元素,若不存在该元素抛出异常
a = [100, 200, 888, 300, 400]
del a[2]
print(a) # 结果:[100,200,300,400]
a = [10, 20, 30, 40, 50]
b1 = a.pop() # 结果:b1=50
print(a, b1) # 结果:[10, 20, 30, 40] 50
b2 = a.pop(1)
print(a, b2) # 结果:[10, 30, 40],20
a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
a.remove(20) # [10, 30, 40, 50, 20, 30, 20,30]
print(a)
复制列表所有的元素到新列表对象:
list1 = [30, 40, 50]
list2 = list1
print(list2)
访问 & 计数
访问:
通过索引直接访问元素
index()获得指定元素在列表中首次出现的索引
a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
print(a[2]) # 结果:30
print(a.index(20)) # 1
print(a.index(20, 3)) # 5
print(a.index(30, 5, 7)) # 6
print(a[a.index(20)])
print(a[a.index(20, 3)])
print(a[a.index(30, 5, 7)])
计数:
count()获得指定元素在列表中出现的次数
len()返回列表长度,即列表中包含元素的个数
print("20在列表中出现的次数:", a.count(20))
a = [10, 20, 30]
print(len(a))
列表的遍历:
print("测试列表的遍历")
a = [10, 20, 30, 40]
for o in a:
print(o)
常见用法
列表常见方法如下图所示, 下面我们对部分用法进行操作
切片操作:
print([10, 20, 30, 40][1:30])
成员资格判断:
a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
print(20 in a)
print(20 not in a)
print(60 not in a)
列表排序:
sort(): 修改原列表,不建新列表的排序
sort(): 建新列表的排序
reversed(): 返回迭代器
a = [2, 3, 1, 5, 4]
print(id(a))
print(a.sort())
print(a)
a.sort(reverse=True)
print(a)
random.shuffle(a) # 打乱顺序
print(a)
a = [20, 10, 30, 40]
print(id(a))
b = sorted(a)
c = sorted(a, reverse=True)
print(b, c)
a = [20, 10, 30, 40]
b = reversed(a)
print(type(c))
print(list(c))
关于reversed()
我们打印输出c发现提示是:list_reverseiterator。也就是一个迭代对象。
同时,我们使用list(c)进行输出,发现只能使用一次。
第一次输出了元素,第二次为空。那是因为迭代对象在第一次时已经遍历结束了,第二次不能再使用。
max, min 和 sum
max, min用于返回列表中最大和最小值
sum 用于统计列表中各元素的和
a = [3, 10, 20, 15, 9]
print(max(a))
print(min(a))
print(sum(a))
多维列表
二维列表
一维列表可以帮助我们存储一维、线性的数据。
二维列表可以帮助我们存储二维、表格的数据。例如下表的数据:
队名 第几季 胜者
才子队 1 比尔
九头蛇队 2 皮尔斯
巨亨队 3 卡罗尔
二维表的访问方式:
a = [
["才子队", 1, "比尔"],
["九头蛇队", 2, "皮尔斯"],
["巨亨队", 3, "卡罗尔"],
]
for m in range(3):
for n in range(3):
print(a[m][n], end=" ")
print()
全部0条评论
快来发表一下你的评论吧 !