05 列表

05 列表

1.else
"""
1)完整的for循环:
for 变量 in 序列:
    循环体
else:
    代码段
    
2) 完整的while循环:
while 条件语句:
    循环体
else:
    代码段
    
else的存在并不会影响原来的循环的执行;
如果循环自然死亡,循环结束后会执行else后面的代码段;如果循环是因为遇到break而结束的,那么else后面的代码就不会执行
"""

# 练习:判断指定数是否是素数
# 素数(质数): 除了1和它本身以外不能被其他数整除的数就是素数
# 判断素数的标准:看从2开始到这个数-1之间有没有一个能被它整除的数,如果有一个能被它整除就说明这个数不是素数。
num = 11
for x in range(2, int(num ** 0.5) + 1):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')
2.认识列表
# 1. 什么是列表(list)
"""
列表是Python中的容器型数据类型; 
将[]作为容器的标志,里面多个数据用逗号隔开:[数据1, 数据2, 数据3, ...]
列表是可变的(元素的个数、元素的值和顺序都可以改变 - 支持增、删、改);列表是有序的(支持下标操作)

补充:元素 - 容器中每个独立的数据就是这个容器中的每个元素
     len(列表)  -  获取列表中元素的个数
"""
# 空列表
list1 = []
print(type(list1), len(list1))

# 任何类型的数据都可以是列表的元素; 同一个列表中的元素的类型可以不相同
list2 = [100]
list3 = [98, 34, 89, 99, 56, 100, 91, 70]
list4 = ['EZ', '瑞文', '亚索', '劫']
list5 = ['小明', 18, False, 78.9]
print(list5)

list6 = [10, [20, 30]]
print(len(list6))       # 2
3.查操作
"""
1)语法:
列表[下标]  -     获取列表中指定下标对应的元素
列表      -       任何结果是列表的表达式,一般是保存列表的变量或者具体某一个列表
[]       -       固定写法
下标      -       下标又叫索引,下标就是列表中元素的位置信息。
                 列表中的每个元素都有两个下标值分别是:从前往后数从0开始不断增加的下标值、从后往前从-1开始不断减小的下标值

注意:这儿的下标不能越界
"""
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
print(movies[2], movies[-5])
print(movies[-1])
# print(movies[7])      # IndexError: list index out of range

# 2. 遍历    -   一个一个的将列表中的元素全部取一遍
"""
方法1:
for 元素  in 列表:
    循环体
    
方法2 - 通过遍历下标来遍历列表
for 下标 in range(len(列表)):
    循环体: 列表[下标]
    
方法3:
for 下标,元素 in enumerate(列表):
    循环体
"""

# 方法1
for x in movies:
    print('x:', x)

scores = [78, 19, 80, 92, 99, 45, 67, 87, 49]

# 案例1: 打印scores中所有不及格的分数
for x in scores:
    if x < 60:
        print(x)

# 案例2: 统计scores中及格的分数的个数
count = 0
for x in scores:
    if x >= 60:
        count += 1
print('及格人数:', count)

# 方法二
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
# 0 1 2 3 4 5 6
# -1 -2 -3 -4 -5- 6- 7
for x in range(len(movies)):
    print(x, movies[x])

# x = 0
# while x < len(movies):
#     print(x, movies[x])
#     x += 1

# -1 -2 -3 -4 -5 -6 -7
for x in range(-1, -len(movies)-1, -1):
    print(x, movies[x])

# 6 5 4 3 2 1 0
for x in range(len(movies)-1, -1, -1):
    print(x, movies[x])

# 方法3:
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
for a, b in enumerate(movies):
    print(a, b)


# 3. 切片 - 获取部分元素
# 1)完整语法
"""
列表[开始下标:结束下标:步长]

说明:
开始下标、结束下标  - 用来确定切片的有效范围(开始下标对应的元素能取到,结束下标对应的元素取不到)
步长  -   确定获取方式(1.正负决定是从前往后取还是从后往前取 2.绝对值大小决定是一个一个的取还是跳着取)
"""
# a. 怎么看切片结果
"""
第一步:先确定结果是否为空(看从开始下标到结束下标对应的方向和步长对应的方式是否一致,如果不一致,结果直接为[])
第二步:确定有效范围(开始下标对应的元素能取到,结束下标对应的元素取不到)
第三步:根据步长在有效范围内获取元素
       绝对值为1:一个一个的取
       绝对值为2:取1个跳1个再取1个
       绝对值为3:取1个跳2个再取1个
"""
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
print(movies[1:-2:1])       # ['复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟']
print(movies[4:0:2])        # []
print(movies[-2:2:-2])      # ['泰坦尼克号', '蜘蛛侠']

# 练习:
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '阴阳师', '刀塔', '原神', '绝地求生']
print(games[1:-3:-2])
print(games[-4:-1:-1])
print(games[-6:0:2])
print(games[-7:-2:3])
print(games[2:8:3])
print(games[-1:3:-2])

# b.通过目标来写切片
"""
第一步:确定开始下标(将目标数据中第一个元素对应的下标作为开始下标)
第二步:确定步长(根据方向确定正负;根据取的时候跳过的方式确定绝对值)
第三步:确定结束下标(如果步长为正,结束下标是取到的最后一个元素后面那个元素的下标;
                 如果步长为负,结束下标是取到的最后一个元素前面那个元素的下标)
"""
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
# ['肖生克的救赎', '蜘蛛侠', '忍者神龟']
print(movies[2:-2:1])
# ['复联3',  '蜘蛛侠', '泰坦尼克号']
print(movies[1:-1:2])
# ['泰坦尼克号', '蜘蛛侠', '复联3']
print(movies[-2:0:-2])

# 2)省略语法
"""
列表[开始下标:结束下标:步长]

a.省略步长:列表[开始下标:结束下标]   -  相当于步长为1
b.省略开始下标:列表[:结束下标:步长]   - 表示从头开始(头有可能是第一个元素也有可能是最后一个元素)
c.省略结束下标:列表[开始下标::步长]   -   从开始的位置开始一直取完
"""
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '阴阳师', '刀塔', '原神', '绝地求生']

print(games[2:-2])    # ['开心消消乐', '炉石传说', '部落冲突', '阴阳师', '刀塔']
print(games[:-2:3])     # ['英雄联盟', '炉石传说', '刀塔']
print(games[:-2:-1])    # ['绝地求生']
print(games[3::-1])     # ['炉石传说', '开心消消乐', '王者荣耀', '英雄联盟']
print(games[3::2])      # ['炉石传说', '阴阳师', '原神']
print(games[:3])        # ['英雄联盟', '王者荣耀', '开心消消乐']
print(games[3:])        # ['炉石传说', '部落冲突', '阴阳师', '刀塔', '原神', '绝地求生']
print(games[::-1])      # ['绝地求生', '原神', '刀塔', '阴阳师', '部落冲突', '炉石传说', '开心消消乐', '王者荣耀', '英雄联盟']
4.列表的增删改
# 1. 增  - 添加元素
# 1) 列表.append(元素)  -  在指定列表的最后添加指定元素
list1 = [10, 20]
print(list1)        # [10, 20]

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

# 案例:获取scores中所有不及格的分数,以列表的形式返回
scores = [98, 34, 89, 99, 56, 100, 91, 70]
# [34, 56]
new_scores = []
for x in scores:
    if x < 60:
        new_scores.append(x)
print(new_scores)       # [34, 56]

# 2)列表.insert(下标, 元素)   -   将指定元素插入到原列表指定下标对应的元素前面
nums = [10, 50, 100]
print(nums)         # [10, 50, 100]
nums.insert(2, 60)
print(nums)         # [10, 50, 60, 100]


# 2. 删  -   删除元素
# 1) del 列表[下标]     -       删除指定下标对应的元素(下标不能越界)
# 2) 列表.remove(元素)      -   删除指定元素(如果对应的元素有多个,只删最前面的那一个; 如果元素不存在会报错)
# 3)列表.pop()            -   取出列表最后一个元素并且返回
#   列表.pop(下标)          -   取出列表中指定下标对应的元素并且返回

nums = [10, 50, 100]
del nums[1]
print(nums)     # [10, 100]

nums = [10, 50, 100]
nums.remove(50)
print(nums)     # [10, 100]

nums = [10, 50, 100, 50, 20]
nums.remove(50)
print(nums)     # [10, 100, 50, 20]

# nums = [10, 50, 100, 50, 20]
# nums.remove(60)   # ValueError: list.remove(x): x not in list

nums = [10, 50, 100, 50, 20]
x = nums.pop()
print(nums, x)     # [10, 50, 100, 50] 20

nums = [10, 50, 100, 50, 20]
x = nums.pop(-2)
print(nums, x)     # [10, 50, 100, 20] 50

# 3. 改 - 修改某个元素的值
# 列表[下标] = 值        -    将指定下标对应的元素修改成指定的值
nums = [10, 50, 100, 50, 20]
print(nums)
nums[0] = 10000
print(nums)     # [10000, 50, 100, 50, 20]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值