day04

列表

列表是能够存储各种数据的容器。列表是可变的。列表是有序的(体现在下标)。

列表的容器符号:[ ],list

创建空列表:

list1 = []

append方法

append( )方法表示的意思是在末尾追加元素

list1.append('Python')
list1.append('Java')  # ['Python','Java']

下标

正向下标:从0开始(0,1,2,3…)

负向下标:从-1开始(-1,-2,-3…)

insert方法

insert( )方法表示的是在指定位置插入元素

list1.insert(1, 'C语言')
list1.insert(1, 0)
list1.insert(1,'C++')
print(list1)		# ['Python', 'C++', 0, 'C语言', 'Java']

修改列表中的元素

通过下标改元素

语法:列表[下标] = 新的值

list1[1] = 'HTML'
print(list1)		# ['Python', 'HTML', 0, 'C语言', 'Java']

删除列表中的元素

del

删除某个元素

语法:del 列表[下标]

del list1[1]
print(list1)
remove

彻底移除某个元素

语法:列表名[下标]

# list1.remove('Java')
print(list1.remove('Java'))
pop

移除某个元素之后知道移除的元素是什么

语法:列表名.pop(下标)

list1.pop(0)
print(list1.pop(0))
clear

将列表清空

语法:列表名.clear( )

list1.clear()
print(list1)
print(list1.clear())

下标

下标:每个元素在列表中的位置。

正向下标:从0开始 负向下标:从-1开始

list1 = ['蜘蛛侠', '环太平洋', '海王', '复仇者联盟']
print(list1[2])
print(list1[-2])	# 效果都是输出海王

下标不能越界,越界就会报IndexError: list index out of range的错误,表示列表的索引超出范围。

越界示例:list1[100]

切片

切片是左闭右开区间,从原来的容器中提取元素组成新的容器

切片可以越界,但是获取不到超出范围的元素

print(list1[1:3])

语法:

变量[M:N:step] M:起始范围(不写M,默认从头开始取) N:结束范围(不写N,默认取到尾)

step步长(step = 1,可以不写)

print(list1[1:3:1])
print(list1[1:4:2])  # step表示期间间隔(step-1)个元素
print(list1[:4:2])
print(list1[::2])
print(list1[:])
  1. 起始范围和结束范围不写的时候,冒号必须存在;步长不写时,冒号不用写
  2. 步长控制获取的元素,每间隔步长-1个元素获取一个元素(获取的当前元素+步长=下一个要获取的元素)
print(list1[::-1])
print(list1[4:1:-1])
  1. M和N必须相同符号,step>0,M<N;step<0,M>N。
print(list1[0:-1])
print(list1[:-1])
print(list1[1:-1:1])
  1. 正向下标可以和负向下标可以组合使用

练习:(有多种方式实现不止罗列出来的几种)

movies = ['阿甘正传', '肖申克的救赎', '霸王别姬', '三傻大闹宝莱坞', '环太平洋', '猿人泰山']

# a.获取['阿甘正传'、'霸王别姬'、'环太平洋']
print(movies[::2])
print(movies[-6:-1:2])
print(movies[:-1:2])
print(movies[:5:2])
# b.获取['肖申克的救赎'、'环太平洋']
print(movies[1::3])
print(movies[1:-1:3])
print(movies[1:5:3])
print(movies[-5:-1:3])
# c.获取['环太平洋'、'霸王别姬'、'阿甘正传']
print(movies[4::-2])
print(movies[-2::-2])
# d.获取['猿人泰山'、'阿甘正传']
print(movies[-1:-7:-5])
print(movies[-1::-5])
print(movies[::-5])
# e.获取['霸王别姬']
print(movies[2::4])
print(movies[2:3])
a = []   # 创建一个空列表
a.append(movies[2])  # 在列表中追加movies[2]这个元素
print(a)      # 输出a这个列表
b = [movies[2]]  # 直接在b列表中添加movies[2]这个元素
print(b)

循环(遍历)

movies = ['阿甘正传', '肖申克的救赎', '霸王别姬', '三傻大闹宝莱坞', '环太平洋', '猿人泰山']

直接遍历

or i in movies:
    print(i, end=' ')

间接遍历

print(len(movies))
for i in range(len(movies)):
    print(movies[i], end=' ')

enumerate

将列表转换为一个可迭代对象

print(enumerate(movies))
for i in enumerate(movies):
    print(i)

练习:将下方列表中的元素排序。

list1 = [23,56,10,55,76,100,30]

for i in range(1,len(list1)):
    print(f'这是第{i}趟排序')
    for j in range(0,len(list1)-i):
        print('每次排序的两个元素', list1[j], list1[j + 1])
        if list1[j]>list1[j+1]:
            list1[j],list1[j+1]=list1[j+1],list1[j]
        print(list1)

这是第1趟排序
每趟排序开始前: [23, 56, 10, 55, 76, 100, 30]
每次排序的两个元素 23 56
[23, 56, 10, 55, 76, 100, 30]
每次排序的两个元素 56 10
[23, 10, 56, 55, 76, 100, 30]
每次排序的两个元素 56 55
[23, 10, 55, 56, 76, 100, 30]
每次排序的两个元素 56 76
[23, 10, 55, 56, 76, 100, 30]
每次排序的两个元素 76 100
[23, 10, 55, 56, 76, 100, 30]
每次排序的两个元素 100 30
[23, 10, 55, 56, 76, 30, 100]
这是第2趟排序
每趟排序开始前: [23, 10, 55, 56, 76, 30, 100]
每次排序的两个元素 23 10
[10, 23, 55, 56, 76, 30, 100]
每次排序的两个元素 23 55
[10, 23, 55, 56, 76, 30, 100]
每次排序的两个元素 55 56
[10, 23, 55, 56, 76, 30, 100]
每次排序的两个元素 56 76
[10, 23, 55, 56, 76, 30, 100]
每次排序的两个元素 76 30
[10, 23, 55, 56, 30, 76, 100]
这是第3趟排序
每趟排序开始前: [10, 23, 55, 56, 30, 76, 100]
每次排序的两个元素 10 23
[10, 23, 55, 56, 30, 76, 100]
每次排序的两个元素 23 55
[10, 23, 55, 56, 30, 76, 100]
每次排序的两个元素 55 56
[10, 23, 55, 56, 30, 76, 100]
每次排序的两个元素 56 30
[10, 23, 55, 30, 56, 76, 100]
这是第4趟排序
每趟排序开始前: [10, 23, 55, 30, 56, 76, 100]
每次排序的两个元素 10 23
[10, 23, 55, 30, 56, 76, 100]
每次排序的两个元素 23 55
[10, 23, 55, 30, 56, 76, 100]
每次排序的两个元素 55 30
[10, 23, 30, 55, 56, 76, 100]
这是第5趟排序
每趟排序开始前: [10, 23, 30, 55, 56, 76, 100]
每次排序的两个元素 10 23
[10, 23, 30, 55, 56, 76, 100]
每次排序的两个元素 23 30
[10, 23, 30, 55, 56, 76, 100]
这是第6趟排序
每趟排序开始前: [10, 23, 30, 55, 56, 76, 100]
每次排序的两个元素 10 23
[10, 23, 30, 55, 56, 76, 100]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值