day6:列表

day6:列表

1、认识列表

1.1 列表是容器型数据类型,将中括号[]作为容器的标志,里面多个元素用逗号隔开:[数据, 数据2, 数据3, …………]

1.2 列表是可变的(可变指的是容器中元素的个数和值可变,———— 支持增删改)

​ 列表是有序的(支持下标操作)

1.3 元素的要求:没有要求

​ (任何类型的数据都可以作为列表的元素,同一个列表中的元素的类型都可以不一样)

# 空列表
list1 = [ ]
list2 = []
print(list1, list2)   # [] []
print(len(list1), len(list2))  # 0 0

# 列表中的元素可以是任何类型的数据
list3 = [10, 1.23, False, None, 'abc', [10, 20]]
print(list3)
# [10, 1.23, False, None, 'abc', [10, 20]]

# 列表是有序的(顺序影响结果)
print([10, 20, 30] == [10, 30, 20])   # False
print({10, 20, 30} == {10, 30, 20})   # True(集合无序)

2、查 操作

1、单个元素 ———— 一次获取一个元素

语法:

列表[下标] ——— 获取指定列表在指定下标对应的元素

说明:

1.1 列表 —— 需要获取元素的列表(可以是任何结果是列表的表达式,比如︰保存列表的变量、具体的列表数据等)

1.2 [] —— 固定写法

1.3 下标 —— 下标又叫索引,是元素在列表中的位置信息。

列表中的每个元素都有两个索引值,一个是从往后从0(第一个)开始不断增加的,另一个是从后往前从-1(倒数第一个)开始不断减小

注意:下标不能越界

num = [10, 20, 30, 40, 50]
print(num[1], num[3])    # 20 40
print(num[1], num[-2])   # 20 40
# print(num[5])   报错:IndexError: list index out of range

2、切片 ———— 一次获取多个元素

2.1 完整结构

语法:

列表[开始下标; 结束下标; 步长] ———— 根据下标和步长

2.2怎么确定切片结果

第一步:确定结果是否为空列表 (看从开始下标到结束下标的方向和步长对应的方向是否一致,如果方向一致结果不一定为空,反之结果肯定是空)

步长为正:表示从前往后取

步长为负:表示从后往前取

第二步:确定有效范围 —— 开始下标对应的元素能取到,结束下标的元素取不到

第三步:在有效范围内,按照步长的绝对值确定获取内容
如果绝对值为1,在有效范围内容1个1个按顺序获取
如果绝对值为2,在有效范围内容取1个跳1个再取1个
如果绝对值为3,在有效范围内容取1个跳2个再取1个
…………
2.3 怎么写切片

第一步: 确定开始下标(目标对应的第一个元素对应的下标)

第二步: 确定步长

确定正负号:看目标元素在原列表中的顺序是从前往后(+)还是从后往前(-)

确定绝对值

第三步:确定结束下标:保证需要获取的数据全部都在有效范围

heroes = ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
print(heroes[-1:1:2])  # 顺序不一致 []
print(heroes[2:7:-2])  # 顺序不一致 []
print(heroes[8:1:3])   # 顺序不一致 []
print(heroes[6:0:-2])   # '孙悟空','墨子', '李白',
print(heroes[-1:1:-1])   # '妲己','李信','诸葛亮','孙悟空','澜','墨子','百里守约','孙斌', '李白'
print(heroes[0: 7:3])  # '王昭君','百里守约','孙悟空'

heroes = ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
# ['诸葛亮',  '孙悟空', '澜']
print(heroes[-3:4:-1])

# ['孙斌', '墨子', '诸葛亮']
print(heroes[1:8:3])

# ['孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信']
print(heroes[1:-1:1])

2.4 切片的省略写法

列表[开始下标:结束下标:步长]

a、省略步长 ———— 相当于步长为1

列表[开始下标:结束下标]

b、省略开始下标 ———— 表示从头开始(看步长的正负,开始下标在第一个或者最后一个)

列表[:结束下标:步长]

c、省略开始下标和步长

列表[:结束下标]

d、省略结束下标 ———— 如果步长为正,就从开始下标一直取到最后一个元素

如果步长为负,就从开始下标一直取到第一个元素

列表[开始下标::步长]

heroes = ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
print(heroes[1:4])   # ['孙斌', '李白', '百里守约']
print(heroes[-1:3])   # []

print(heroes[:4:2])  # ['王昭君', '李白']
print(heroes[:4:-2])  # ['妲己', '诸葛亮', '澜']

print(heroes[:-4])   # ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜']

print(heroes[1::2])  # ['孙斌', '百里守约', '澜', '诸葛亮', '妲己']
print(heroes[-3::-1])  # ['诸葛亮', '孙悟空', '澜', '墨子', '百里守约', '李白', '孙斌', '王昭君']
print(heroes[3:])    # ['百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']

print(heroes[::-3])  # ['妲己', '孙悟空', '百里守约', '王昭君']
print(heroes[:])     # ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']

3、遍历 ———— 一个一个的获取列表中所有的元素

补充:len(列表) ——— 获取列表中元素的个数

方法1:

for 变量 in 列表:

​ 循环体

方法2:通过下标来遍历列表

for 变量 in range(len(列表)):

方法3:同时获取下标和元素

for 变量1, 变量2 in enumerate(列表)

# 练习1:计算nums中所有元素的和
nums = [12, 45, 8.34, 56, 23]
num = 0
for x in nums:
    num += x
print(num)

# 练习2:统计nums中所有偶数的个数
nums = [23, 88, 90, 88, 67, 55, 11]
count = 0
for x in nums:
    if x % 2 == 0:
        count += 1
print(count)

# 练习3: 统计list1中字符串的个数
list1 = [109, 23.4, True, 'abc', 'helo', 23, '12', False, None]
count = 0
for x in list1:
    if type(x) == str:
        count += 1
print(count)

3、增删改

1、增 ——— 添加元素

列表.append(元素) ———— 在列表的最后添加指定元素

nums = [10, 20, 30]
print(nums)
# [10, 20, 30]

nums.append(100)
print(nums)
# [10, 20, 30]

列表.insert(下标, 数据) ———— 在列表指定下标对应的元素前插入指定数据

nums = [10, 20, 30]
print(nums)

nums.insert(-1, 100)
print(nums)
# [10, 20, 100, 30]

nums.insert(0, 100)
print(nums)
# [100, 10, 20, 100, 30]

2、删 —— 删除元素

del 列表[下标] ———— 删除列表中指定下标对应的元素

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)

del games[1]
print(games)
# ['王者荣耀', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']

列表.remove(元素) ———— 删除列表中的指定元素(如果元素不存在,会报错; 如果元素有多个,只会删除最前面的那一个)

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)

games.remove('lol')
print(games)

列表.pop() ———— 取出列表最后一个元素,并且返回

列表对应.pop(下标) ———— 取出列表指定下标对应的元素

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
x = games.pop()
print(games, x)

3、改 ———— 修改元素的值

列表[下标] = 新元素 ———— 修改列表中指定下标对应的元素为新的元素

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)

games[0] = '部落冲突'
print(games)
# ['部落冲突', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']

games[-1] = '部落冲突'
print(games)
# ['部落冲突', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '部落冲突']

# 案例:将scores中所有不及格的分数全部修改成“重修”

scores = [89, 23, 79, 99, 45, 60, 78, 59]
for index, item in enumerate(scores):
    if item < 60:
        scores[index] = '重修'
print(scores)
# [89, '重修', 79, 99, '重修', 60, 78, '重修']

4、列表相关操作

数学运算符:+ *

列表1 + 列表2 —— 将连个列表中的元素依次合并成—个新的列表

list1 = [10, 20]
list2 =[100, 200, 300]
list3 = list1 + list2
print(list3)
# [10,20,100,200,300]

列表 * N / N * 列表 —— 列表中的元素重复N遍,产生一个新的列表

list1 = [10, 20]
list4 = list1 * 3
print(list4)
# [10, 20, 10, 20, 10, 20]

in 和 not in操作

元素 in 列表 ———— 判断列表中是否存在指定元素

元素 not in 列表 ———— 判断列表中是否不存在指定元素

print(10 in (10, 20, 30))       # True
print([10, 20] in [10, 20, 30])     # Flase
print([10] in [[10], 20, 30])     # True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值