一、 列表基础知识
1、列表的元素类型
列表中的元素可以是任何类型
l0 = [1, "hello world", ["A", "B", ["C1", "C2", "C3"]], range(10)]
print(l0)
# [1, 'hello world', ['A', 'B', ['C1', 'C2', 'C3']], range(0, 10)]
2、 列表的下标
列表中的列表的索引值是从第一层列表的索引开始到最后一层列表
l0 = [1, "hello world", ["A", "B", ["C1", "C2", "C3"]], range(10)]
print(l0[2])
print(l0[2][2])
print(l0[2][2][2])
# ['A', 'B', ['C1', 'C2', 'C3']]
# ['C1', 'C2', 'C3']
# C3
3、 列表类型转换
(1)、list() 转换的内容要求为可迭代的,转换后拆分为列表
s0 = "hello world"
l1 = [1, 5, "ok"]
print(list(s0))
print(list(range(10)))
print(list(l1))
# ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [1, 5, 'ok']
(2)、其他转换函数
int()/float()/bool()/str()
转换内容: 数字、形式为整数的字符串/数字,字符串/任意类型/任意类型
4、空列表为假
(1)、[ ]为假
if []:
print("[]为真")
else:
print("[]为假")
# []为假
(2)、None/ 0 / "" /False:都表示假
二、 可变的列表与不可变的字符串
1、iterable[可迭代的]。
iterable表示可迭代的,即可拆分的,可使用for循环,如:range()/str/list。
2、普通变量、字符串为不可变类型;列表、字典等为可变类型。
3、列表的可变表示列表中的发生变化时,列表的内存位置不变。
print(l1, id(l1))
l1.append(None)
print(l1, id(l1))
# [1, 5, 'ok'] 1543334029504
# [1, 5, 'ok', None] 1543334029504
4、在字符串中,不能改变字符串的内容,即在字符串中重新赋值是改变变量指向的内存位置。
s0 = "hello"
print(s0, id(s0))
s0 = "hi"
print(s0, id(s0))
# hello 2686123592880
# hi 2686123593200
三、列表的遍历
1、用索引遍历,可找出对应元素
for i in range(len(l0)):
print(i, l0[i])
# 0 1
# 1 hello world
# 2 ['A', 'B', ['C1', 'C2', 'C3']]
# 3 range(0, 10)
2、直接遍历列表
for e in l0:
print(e)
# 1
# hello world
# ['A', 'B', ['C1', 'C2', 'C3']]
# range(0, 10)
四、列表的操作方法
1、添加类型
l0 = [1, 2, 3, "hello word", range(5), ["a", "b", "c"], "ok"]
(1)、append:在末尾添加;append没有返回值,是将元素添加在l0中
print(l0.append(3.14))
print(l0)
# None
# [1, 2, 3, 'hello word', range(0, 5), ['a', 'b', 'c'], 'ok', 3.14]
(2)、insert(index, obj) 在指定下标的位置添加指定元素。
l0.insert(2, "python")
print(l0)
# [1, 2, 'python', 3, 'hello word', range(0, 5), ['a', 'b', 'c'], 'ok', 3.14]
(3)、expend(iterable) 将 可迭代元素 插入末尾。
l0.extend(range(3))
print(l0)
# [1, 2, 'python', 3, 'hello word', range(0, 5), ['a', 'b', 'c'], 'ok', 3.14, 0, 1, 2]
2、删除类型
(1)、pop:默认删除最后一个,并有返回值
r = l0.pop()
print(r, l0)
# 2 [1, 2, 'python', 3, 'hello word', range(0, 5), ['a', 'b', 'c'], 'ok', 3.14, 0, 1]
也可定义索引值
r = l0.pop(4)
print(r, l0)
# hello word [1, 2, 'python', 3, range(0, 5), ['a', 'b', 'c'], 'ok', 3.14, 0, 1]
(2)、remove:删除指定元素;元素不存在直接报错,不返回内容。
r = l0.remove(3)
print(r, l0)
# None [1, 2, 'python', range(0, 5), ['a', 'b', 'c'], 'ok', 3.14, 0, 1]
(3)、clear:清空列表
l0.clear()
print(l0)
# []
3、统计次数:count
l1 = [1, 2, 3, 3, range(5), [3, "b", "c"], "ok"]
统计元素在列表中出现的次数,并返回;找不出返回0;列表只统计第一层列表。
r = l1.count(7)
a = l1.count(3)
print(r, a)
# 0 2
4、找索引:index
找出在列表中的下标索引,可指定开始与结束索引;找不出直接报错。
r = l1.index("ok")
print(r)
# 6
5、逆序列表:reverse
逆置列表 没有返回值
r = l1.reverse()
print(r, l1)
# None ['ok', [3, 'b', 'c'], range(0, 5), 3, 3, 2, 1]
6、排序:sort
l2 = [3, 6, 1, 0, 5]
l3 = [3, 6, 1, 0, 5]
# sort 排序 默认正序
# sort(reverse = True)
l2.sort()
l3.sort(reverse=True)
print(l2)
print(l3)
# [0, 1, 3, 5, 6]
# [6, 5, 3, 1, 0]