python手把手50天就业(四) 列表list常用操作 第四天下午

工程师们大家好,配套免费视频平时上班周末录制

1.列表

在程序里面存储一个元素用普通类型 int str就可以了

存储多个元素就需要用到列表:列表可以⼀次性存储多个数据,且可以为不同数据类型,下标从零开始。

my_list = ['天', '青', '色']
print(my_list)  # 打印:['天', '青', '色']
print(type(my_list))  # 打印:<class 'list'>


这就是列表,天、青、色 分别为里面的三个元素
下标为 0 1 2   列表的长度len(my_list)3

不同的数据类型: my_list2 = ['天', '青', '色' , 1,2] 也是可以的

列表是多个元素的集合,所以我们可以对其增删改查

1.1增加元素

直接用+号

# 原列表
my_list = ['天', '青', '色']
# ['等', '烟', '雨']是另外的列表
# 结果:['天', '青', '色', '等', '烟', '雨'] 
# 组合为了一个新的列表
print(my_list + ['等', '烟', '雨'])
# 打印原列表:['天', '青', '色'] 没有改变
print(my_list)

append方法

# 原列表
my_list = ['天', '青', '色']
# 增加一个元素'等'
my_list.append('等')
# 打印:['天', '青', '色', '等']
print(my_list)

# append一个列表
my_list.append(['烟', '雨'])
# 打印:['天', '青', '色', '等', ['烟', '雨']] 
# 要注意 是把列表作为一个独立的元素加在了my_list中
print(my_list)

extend方法

# 原列表
my_list = ['天', '青', '色']
# 增加一个元素'等'
my_list.extend('等')
# 打印:['天', '青', '色', '等']
print(my_list)

# append一个列表
my_list.extend(['烟', '雨'])
# 打印:['天', '青', '色', '等', '烟', '雨']
# 要注意 是把增加的列表 每个元素取出来 作为独立元素加在了my_list中
print(my_list)

倍数增加

my_list = ['天', '青', '色']
my_list2 = my_list * 2
# ['天', '青', '色', '天', '青', '色']
print(my_list2)

# 部分扩容:['天', '青', '天', '青'] [0:2]是截取的意思 后面看
list_ = my_list[0:2] * 2
print(list_)

insert

my_list = ['天', '青', '色', '等', '烟', '雨']
my_list.insert(1, '说重点')  # 在下标为1的位置 插入字符串 说重点
print(my_list)
my_list.insert(-1, '军哥')  # -1插入后变为倒数第二位 -2 插入后倒数第三位 以此类推
print(my_list)
# 想插入到最后
my_list.insert(len(my_list), '军大哥')
print(my_list)
print(len(my_list))  # 表示集合的长度

1.2删除

del

my_list = ['天', '青', '色', '等', '烟', '雨']
# 删除下标为0的元素
del my_list[0]  # 结果 ['青', '色', '等', '烟', '雨']
print(my_list)
del my_list
# print(my_list) # NameError: name 'my_list' is not defined

pop

my_list = ['天', '青', '色', '等', '烟', '雨']
pop = my_list.pop()  # 默认弹出最后一个
print(my_list)
print(pop)

list_pop = my_list.pop(1)  # 可以根据下标来弹出
print(my_list)
print(list_pop)

remove

my_list = ['天', '青', '色', '等', '烟', '天', '雨']
remove = my_list.remove('天')
print(remove) # 没有返回值 直接移除
print(my_list) # 结果:['青', '色', '等', '烟', '天', '雨'] 只移除了第一个匹配的
# ValueError: list.remove(x): x not in list 报错 不能移除里面没有的元素 不能根据下标移除
my_list.remove(0) 
print(my_list)

clear

my_list = ['天', '青', '色', '等', '烟', '天', '雨']
my_list.clear()
print(my_list)  # 结果:[]

1.3修改

my_list = ['天', '青', '色', '等', '烟', '雨']
my_list[1] = '黄'  # 根据下标修改数据
print(my_list)

1.4查询

统计与下标查询

my_list = ['天', '青', '色', '等', '烟', '雨', '天']
count = my_list.count('天')  # 统计'天'这个元素出现的次数
print(count)  # 2
print(my_list[1])  # 打印下标为1的元素 结果: 青
index = my_list.index('天')  # 查找天这个元素的 下标 只找第一个
print(index)

list_index = my_list.index('天', 2, len(my_list))  # 从下标为2开始查找
print(list_index)

print(my_list.index('abc'))  # 报错 ValueError: 'abc' is not in list

1.5列表切片

切片是形成一个新的列表 原列表不会变

my_list = ['天', '青', '色', '等', '烟', '雨']
list1 = my_list[1:4]  # 1-4 包含下标1 不包含4
print(list1)  # ['青', '色', '等']
print(my_list)  # 切片是形成一个新的列表 原列表不会变

list2 = my_list[1:]  # 下标1到最后
print(list2)
list3 = my_list[1:-1]  # -1不包含最后一位
print(list3)
list4 = my_list[1::2]  # 下标为1后面开始切 间隔2 也就是135
print(list4)
list5 = my_list[1::-1]  # 切下标1-0 反过来了
print(list5)  # 结果:['青', '天']
list6 = my_list[-3:]  # 切倒数第三位到最后
print(list6)

1.6判断

my_list = ['天', '青', '色', '等', '烟', '雨']
print('天' in my_list)  # 天在列表中 返回true
print('天' not in my_list)  # false
print(not '天' in my_list)  # false

1.7列表反转

my_list = ['天', '青', '色', '等', '烟', '雨']
reverse = my_list.reverse()
print(reverse) # None 
print(my_list) # 注意是:原列表反转

1.8排序

my_list = ['天', '青', '色', '等', '烟', '雨']
my_list2 = [1, 7, 6, 4, 5, 2]
sort = my_list2.sort()
print(sort)  # None
print(my_list2)  # 注意原列表排序改变 默认升序

my_list2.sort(reverse=True)  # 降序 [7, 6, 5, 4, 2, 1]
print(my_list2)

# (1, 5)这个是元组 后面会学习
my_list3 = [(1, 5), (2, 4), (3, 6), (4, 3)]


# 传入一个元组(1,5)获取下标为1的 也就是5
#  这个叫方法 后面学习 理解可以自定义排序就可以了
def get_two(a):
    return a[1]


my_list3.sort(key=get_two)
# [(4, 3), (2, 4), (1, 5), (3, 6)] 按第二位排序了
print(my_list3)

1.9打乱列表

import random

my_list = ['天', '青', '色', '等', '烟', '雨']
random.shuffle(my_list)  # 随机打乱列表
print(my_list)

2.0列表嵌套

name_list = [['⼩明', '⼩红', '⼩绿'], ['Tom', 'Lily', 'Rose'], 100]
print(name_list[2])  # 100
print(name_list[0])  # name_list的0号也是一个列表
print(name_list[0][1])  # 取name_list 0号元素 的第一个元素

2.1列表复制

my_list = ['天', '青', '色', '等', '烟', '雨']
my_list2 = my_list  # 把my_list的地址值给my_list2 修改my_list2的时候 my_list也会变 切记
print(my_list2)
print(id(my_list))
print(id(my_list2))

copy = my_list.copy()
print(copy)
print(id(copy))
# 打印结果:可以看到copy的时候 地址值跟原列表不一样
# 而等号赋值的时候是相同的
'''
['天', '青', '色', '等', '烟', '雨']
2169696444936
2169696444936
['天', '青', '色', '等', '烟', '雨']
2169696445000   
'''

2.2列表循环

my_list = ['天', '青', '色', '等', '烟', '雨']
index = 0
i = len(my_list)
while index < i:
    print(my_list[index])  # 根据下标遍历
    index += 1

for循环

my_list = ['天', '青', '色', '等', '烟', '雨']

for a in my_list:
    print(a)

for循环

my_list = ['天', '青', '色', '等', '烟', '雨']
info = [a for a in my_list]  # 循环my_list元素 挨个赋值给a 把a存在info形成一个新的列表
print(info)  # ['天', '青', '色', '等', '烟', '雨']
# 前面是把a作为info的列表元素 这个是把 print(a)的返回值作为元素
info = [print(a) for a in my_list]  # 但是可以打印
print(info)  # [None, None, None, None, None, None]


# 方法是后面学习的 大家理解 可以用循环的a做其他事情就可以了
def test(a):
    print(f'测试打印:{a}')


info = [test(a) for a in my_list]
print(info)  # [None, None, None, None, None, None]

for range循环

my_list = ['天', '青', '色', '等', '烟', '雨']
r = range(10)  # 生成0-10 不包含10的range对象 可以用for遍历
print(r)
for i in r:
    print(i, end='\t')

print()
for i in range(1, 11):  # 1-11 不包含11
    print(i, end='\t')

print()
for i in range(0, 35, 5):  # 步长为5 0 5 10 15 20 25 30
    print(i, end='\t')

print()
for i in range(0, -10, -1):  # 0到-10 不包含-10
    print(i, end='\t')

# 所以也可以用range来遍历
print()
for i in range(len(my_list)):
    print(my_list[i], end='\t')

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说重点丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值