1.列表
列表 list 可以存储多个数据,数据可以是多种类型。
特征:中括号括起来,内部可以存放多个数据,元素与元素之间用逗号隔开,元素可以是任意数据类型。
2.类型转换
能够支持for循环的数据,都能够被list()转成列表。
底层就是进行了for循环。
list1 = ['tiger', 'monkey', 'cat']
print(type(list1), list1)
print(list('123456'))
print(list({'a': 85, 'b': 75}))
3.查看数据
3.1索引取值
列表中每个元素占一个索引,可以从左往右正向取值,从右往左反向取值。
格式:列表[起始值:上限值:步长]
起始值:起始位置。
上限值:上限的位置,只能获取到它的前一位数,不包含它。
步长:默认为正1,可以为负数。
省略索引:
省略第一个索引:相当于使用索引0。
省略第二个索引:相当于使用列表的长度,意味着切片直至列表的末尾。
list1 = ['a', 'b', 'c', 'd', 'e']
print(list1[0])
print(list1[0:5])
print(list1[:3])
print(list1[0:])
print(list1[0:5:2])
print(list1[::-1])
a
['a', 'b', 'c', 'd', 'e']
['a', 'b', 'c']
['a', 'b', 'c', 'd', 'e']
['a', 'c', 'e']
['e', 'd', 'c', 'b', 'a']
list_x = [33, 44, 11, 98, 56, 76]
print(list_x[:])
print(list_x[::-1])
print(list_x[0:6:-1])
3.2列表嵌套
多层格式:
变量名[索引][索引]···
list1 = [1, 1.1, 'a', [1, ], ]
print(list1[0])
print(list1[3][0])
3.3统计列表
len() 函数 统计元素的个数
.count() 统计列表中指定查询的元素个数
list1 = ['A', 'B', 'B', 'B', 'A']
print(len(list1))
print(list1.count('A'))
3.4.查看索引
.index(值)从左往右查到就返回索引,不存在则报错。
list1 = ['A', 'B', 'B', 'B', 'A']
print(list1.index('A'))
4.修改数据
通过索引来对值进行修改。
list1 = [1, 2, 3]
list1[0] = 'a'
print(list1)
list1 = [0, 1, 2, [0, 1, 2, 3]]
print(list1, id(list1))
list1[0] = 'a'
print(list1, id(list1))
5.添加数据
5.1列表复制与拼接
list1 = ['hello', ' word']
print(list1 + ['abc'])
print(list1 * 2)
5.2末尾追加
.append() 末尾追加元素
list2 = ['a', 'b', 'c', 'd', 'e']
list2.append('f')
print(list2)
list3 = ['a', 'b', 'c', 'd', 'e']
print(list3)
a = [1, 2, 3, 4, 5]
for i in a:
list3.append(i)
print(list3)
5.3.共用空间
如果多个列表指向用一个内存地址的时候,无论谁修改值,它们的值都一样。
链式赋值简单来说就是后面的变量指向前面变量所指向的内存地址。
l1 = l2 = []
l3 = []
l1.append(1)
l2.append(2)
print(l1, l2, l3)
print(id(l1), id(l2), id(l3))
""" 输出
[1, 2] [1, 2] []
2145910424520 2145910424520 2145910424456
"""
5.4.插入元素
.insert插入元素。
.insert(索引, 数据)
list1 = ['a', 'b', 'c', 'd', 'e']
list1.insert(0, 'A')
print(list1)
list1.insert(3, 'A')
print(list1)
5.5扩展列表
.extend() 拼接多个列表等价于 for + append
.extend(列表)
list1 = ['a', 'b', 'c', 'd', 'e']
print(list1)
a = [1, 2, 3, 4, 5]
list1.extend(a)
print(list1)
6.删除数据
1. del 删除索引指向的值
2. .remove(值) 将指定元素移除
3. .pop(索引) 弹出 (索引不写,默认弹尾部) 弹出的值可以打印,也可以复制给变量。
4. .clear() 清空列表
6.1del
list1 = ['a', 'b', 'c', 'd', 'e']
del list1[0:2]
print(list1)
6.2remove
a = ['a', 'b', 'c', 'd', 'e']
print(a)
a.remove('a')
print(a)
6.3pop
list1 = ['a', 'b', 'c', 'd', 'e']
list1.pop()
print(list1)
x = list1.pop()
print(x)
list1.pop(1)
print(list1)
"""
['a', 'b', 'c', 'd']
d
['a', 'c']
"""
6.4clear
list1 = ['A', 'B', 'B', 'B', 'A']
list1.clear()
print(list1)
7.排序
.sort() 排序默认是升序
.sort(reverse = True) ,revers = True 降序
.reverse() 倒序
list1 = ['A', 'B', 'C', 'B', 'A', '1']
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)
list1.reverse()
print(list1)
8.练习
队列与堆栈 的模拟
队列:先进先出
堆栈:后进先出
num = 5
list1 = []
for i in range(num):
list1.append(i)
print('list1>>>:%s\n-----队列----' % list1)
for i in list1:
print(i, end=' ')
print('\n----堆栈----')
for i in range(num):
print(list1.pop(), end=' ')
"""
list1>>>:[0, 1, 2, 3, 4]
-----队列----
0 1 2 3 4
----堆栈----
4 3 2 1 0
"""
list_0 = [0, 1, 2]
for i in list_0:
list_0.pop(i)
l1 = ['kid', 'qq_xx', 'qxx']
l2 = []
for i in l1:
l2.append(i.strip('xx'))
print(l2)
3.有列表['kid', 18,[2000, 1, 1]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
4.用列表的insert与pop方法模拟队列
5.用列表的insert与pop方法模拟堆栈
6.列表l = ['a','b',1,'a','a'],去重,得到新列表,保存列表原来的顺序