19.Python列表类型及常用内置方法

1.列表

列表 list 可以存储多个数据,数据可以是多种类型。
特征:中括号括起来,内部可以存放多个数据,元素与元素之间用逗号隔开,元素可以是任意数据类型。

2.类型转换

能够支持for循环的数据,都能够被list()转成列表。
底层就是进行了for循环。
list1 = ['tiger', 'monkey', 'cat']  # 解释内部 list_a = list(['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])  # 倒退全切 [76, 56, 98, 11, 44, 33]
print(list_x[0:6:-1])  # 错误 得到一个空 []
# [::-1]就支持倒退取值,不要去纠结
3.2列表嵌套
多层格式:
变量名[索引][索引]···
list1 = [1, 1.1, 'a', [1, ], ]
print(list1[0])  # 1
print(list1[3][0])  # 6
3.3统计列表
len() 函数 统计元素的个数
.count() 统计列表中指定查询的元素个数
list1 = ['A', 'B', 'B', 'B', 'A']
print(len(list1))  # 5
print(list1.count('A'))  # 2
3.4.查看索引
.index()从左往右查到就返回索引,不存在则报错。
list1 = ['A', 'B', 'B', 'B', 'A']
print(list1.index('A'))  # 0

4.修改数据

通过索引来对值进行修改。
list1 = [1, 2, 3]
list1[0] = 'a'
print(list1)  # ['a', 2, 3]

在这里插入图片描述

list1 = [0, 1, 2, [0, 1, 2, 3]]
print(list1, id(list1))  # [0, 1, 2, [0, 1, 2, 3]]  id:1600256455432

list1[0] = 'a'
print(list1, id(list1))  # ['a', 1, 2, [0, 1, 2, 3]] id:1600256455432

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)  # ['a', 'b', 'c', 'd', 'e', 1, 2, 3, 4, 5]
5.3.共用空间
如果多个列表指向用一个内存地址的时候,无论谁修改值,它们的值都一样。
链式赋值简单来说就是后面的变量指向前面变量所指向的内存地址。

image-20211108222734087

l1 = l2 = []  # 共用一个空间

l3 = []
l1.append(1)  # [1, 2]
l2.append(2)  # [1, 2]
print(l1, l2, l3)

print(id(l1), id(l2), id(l3))  # 1731506439112 1731506439112

""" 输出
[1, 2] [1, 2] []
2145910424520 2145910424520 2145910424456
"""
5.4.插入元素
.insert插入元素。
.insert(索引, 数据) 
list1 = ['a', 'b', 'c', 'd', 'e']
list1.insert(0, 'A')  # 在索引 0 插入A
print(list1)
list1.insert(3, 'A')  # 在索引 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]  # del 语法删除 索引指向的值
print(list1)  # ['c', 'd', 'e']
6.2remove
a = ['a', 'b', 'c', 'd', 'e']
print(a)  # ['a', 'b', 'c', 'd', 'e']

a.remove('a') 
print(a)  # ['b', 'c', 'd', 'e']
6.3pop
list1 = ['a', 'b', 'c', 'd', 'e']
list1.pop()  # 弹出 e
print(list1)  # ['a', 'b', 'c', 'd']
x = list1.pop()  # 弹出 d   把d在赋值给变量
print(x)
list1.pop(1)  # 指定弹出索引 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()  # 按ASCII排序
print(list1)  # ['1', 'A', 'A', 'B', 'B', 'C']
list1.sort(reverse=True)  # 降序 ['C', 'B', 'B', 'A', 'A', '1']
print(list1)
list1.reverse()  # 倒序 ['1', 'A', 'A', 'B', 'B', 'C']
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]  # 索引 0 -> 3
for i in list_0: 
    list_0.pop(i)
# 第一次弹出索引0后  list_0 = [1, 2] 
# 第二次弹出索引1后  list_0 = [1]  
# 第三次弹出索引2后  list_0 = [1]      没有索引2 报错

在这里插入图片描述

# 2.从列表l1 = ['kid', 'qq_xx', 'qxx']中剪切xx,h后赋值给新变量

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'],去重,得到新列表,保存列表原来的顺序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值