day005-列表

1,认识列表

列表:

列表是容器型数据类型,将[ ]作为容器标志,里面多个元素用逗号隔开:[元素1, 元素2, 元素3, 元素4,…];列表是可变的(可变指的是元素的个数、值和顺序可变);列表是有序的(元素有固定位置信息–下标)。

元素:

任何Python支持的类型的数据都可以作为列表的元素,同一个列表的元素的类型可以不同,同一元素可以重复出现。

list1 = []    # 空列表
list2 = [10, 10, 20, '张三', 12.34]
list3 = [10, 20, [1, 2]]
list4 = [10, 12.5, 'abc', True, [1, 2], (10, 20), {
    
    'a': 100}, lambda x: x*2]

2, 获取列表元素

① 获取单个元素

语法:列表[下标] - 获取列表中指定下标对应的元素

下标:下标又叫索引,代表元素在序列中的位置信息,下标值的范围有两种:

a.元素从左往右对应的下标是从0开始依次增加
b.元素从右往左对应的下标是从-1开始依次减少

heroes = ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[1])
print(heroes[0])
print(heroes[-2])
h = heroes[-3]    # h = '马可波罗'
print(h)

② 遍历

方法一:直接获取元素
for 变量 in 列表:
循环体

# 练习:定义一个列表保存一个班所有学生的分数
scores = [45, 67, 89, 90, 77, 23, 50]
# 遍历打印每个学生的分数
for x in scores:
    print(x)
# 统计不及格学生的个数
count = 0
for x in scores:
    if x < 60:
        count += 1
print(count)

方法二:通过下标遍历元素
len(列表) - 获取列表长度(获取列表元素的个数)

for 变量 in range(len(列表)):
循环体

scores = [45, 67, 89, 90, 77, 23, 50]
for index in range(len(scores)):
    print(index, scores[index])
print('=============================')    
# 练习:打印位置(下标)在偶数位上的所有元素
for index in range(len(scores)):
    if index & 1 == 0:
        print(scores[index])

③ 获取部分元素(列表切片) - 返回一个小列表

语法:
列表 [ 开始下标:结束下标:步长 ]
步长为正:[开始下标, 结束下标),从前往后,每次下标增加步长;
步长为负:[开始下标, 结束下标), 从后往前,每次下标增加步长。

heroes = ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[1:4:1])    # ['后裔', '马可波罗', '虞姬']
print(heroes[1:4:2])    # ['后裔', '虞姬']
print(heroes[0:-1:1])   # ['鲁班7号', '后裔', '马可波罗', '虞姬']
print(heroes[4:1:1])    # []
print(heroes[1:4:-1])   # []
print(heroes[-1:0:-2])  # ['孙尚香', '马可波罗']

3, 列表的增删改

① 增 - 往列表中添加元素

语法一:列表.append(元素) - 在指定列表的最后追加一个指定的元素。

movies = ['看不见的客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
movies.append('触不可及')
print(movies)    # ['看不见的客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公', '触不可及']

movies.append('恐怖游轮')
print(movies)    # ['看不见的客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公', '触不可及', '恐怖游轮']

语法二:列表.insert(下标, 元素) - 在列表指定下标对应元素前插入指定元素。

movies = ['看不见的客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
movies.insert(1, '星际穿越')
print(movies)    # ['看不见的客人', '星际穿越', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
# 练习:输入一个学生的成绩,将输入的成绩插入到列表scores,并且保证插入后不影响从大到小的规律
scores = [100, 97, 95, 87, 82, 82, 80, 76, 72, 65, 60, 57, 53, 40]
grade = float(input('请输入学生成绩:'))
for index in range(len(scores)):
    if scores[index] <= grade:
        scores.insert(index, grade)
        break
else:
    scores.append(grade)
print(scores)

② 删 - 删除列表中某个元素

语法一: del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)

TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年']
del TVs[2]
print(TVs)    # ['琅琊榜', '破产姐妹', '庆余年']

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

TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '甄嬛传', '甄嬛传']
x = TVs.remove('甄嬛传')
print(TVs, x)    # ['琅琊榜', '破产姐妹', '庆余年', '甄嬛传', '甄嬛传'] None

语法三:列表.pop() - 取出列表中最后一个元素,并且返回;列表.pop(下标) - 取出列表中指定下标对应的元素,并且返回。

TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '甄嬛传', '甄嬛传', '白夜追凶']
del_item = TVs.pop()
print(TVs, del_item)   # ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '甄嬛传', '甄嬛传']  白夜追凶

x = TVs.pop(1)
print(TVs, x)    # ['琅琊榜', '甄嬛传', '庆余年', '甄嬛传', '甄嬛传'] 破产姐妹

③ 改 - 修改元素的值

语法:列表[下标] = 值 - 将列表中指定下标对应的元素修改成指定的值。

# 练习:列表scores,将列表中低于60分的成绩全部修改成60分
scores = [89, 9, 78, 23, 76, 99, 56, 66]
for x in range(len(scores)):
    if scores[x] < 60:
        scores[x] = 60
print(scores)
# [89, 60, 78, 60, 76, 99, 60, 66]

④ in 和 not in

语法:值 in 列表 - 判断列表中是否存在指定值对应的元素

语法:值 not in 列表 - 判断列表中是否不存在指定值对应的元素

nums = [[1, 2], 3, 4]
print([1, 2] in nums)    # True
print(1 in nums)    # False

猜你喜欢

转载自blog.csdn.net/lijianmingweibo/article/details/113128900
005