day5-列表

Day5列表

循环的else结构

Python完整的循环结构

for 变量 in 序列:
循环体
else:
代码段

while 条件语句:
循环体
else:
代码段

注意:当循环自然结束,else后面的代码会执行,如果循环是因为遇到break而结束的else后面的代码不会执行

练习1:判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

num = 4
for x in range(2, int(num**0.5) + 1):
    if num % x == 0:
        print(num, '不是素数!')
        break
else:
    print(num, '是素数!')

认识列表

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

特点:
列表是可变的(指的元素的个数、元素的值以及元素的顺序可以) ---------------支持增删改
列表是有序的-----------------支持下标(元素在序列中的位置信息)操作

元素:
列表对元素没有要求 - 一个列表可以保存任何类型的数据;同一个列表可以保存不同类型的数据

  • #空列表
    list1 = []
    print(list1)
    
  • #元素可以是任何类型的元素, 而且类型可以不一致
    list2 = [10, 23.4, True, 'abc', [10, 20]]
    print(list2)
    
  • #列表是有序的
    print([1, 2, 3] == [3, 1, 2])       # False (列表有序)
    print({1, 2, 3} == {3, 1, 2})       # True  (集合无序)
    

获取列表元素

  1. 一次获取单个元素

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

注意

可以是具体的一个列表值,也可以是保存列表的变量

下标不能越界

list1 = [10, 20, 30]
print(list1[-1])         # 30
  1. 切片 - 一次获取多个元素

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

heroes = ['鲁班7号', '甄姬', '艾琳', '张飞', '孙膑', '蔡文姬']
print(heroes[0:4:-1])       # []
print(heroes[1:-1:2])        # ['甄姬', '张飞']
print(heroes[-2:1:2])       # []
print(heroes[-1:0:-1])       # ['蔡文姬', '孙膑', '张飞', '艾琳', '甄姬']
print(heroes[-1:0:-2])       # ['蔡文姬', '张飞', '甄姬']

切片语法参数的省略

  • 省略步长 - 相当于步长是1
    列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
print(heroes[-1:2])     # []
print(heroes[2:-1])     # ['艾琳', '张飞', '孙膑']
  • 省略开始下标 - 如果步长为正就从第一个元素开始;如果步长为负就从最后一个元素开始
    列表[:结束下标:步长]
    列表[:结束下标]
print(heroes[:3:-2])        # ['蔡文姬']
print(heroes[:3])           # ['鲁班7号', '甄姬', '艾琳']
  • 省略结束下标 - 步长为正取到最后一个元素为止;步长为负取到第一个元素为止
    列表[开始下标::步长]
    列表[开始下标:]
print(heroes[-2::-2])    # ['孙膑', '艾琳', '鲁班7号']
print(heroes[1:])       # ['甄姬', '艾琳', '张飞', '孙膑', '蔡文姬']
print(heroes[::2])      # ['鲁班7号', '艾琳', '孙膑']

  • 一起省
    列表[::步长]
    列表[:]
print(heroes[:])      # ['鲁班7号', '甄姬', '艾琳', '张飞', '孙膑', '蔡文姬']
print(heroes[::-1])     # 列表倒序
print(heroes[1:-1])     # 去头去尾
print(heroes[:])        # 拷贝列表
  1. 遍历 - 一个一个取,取完

方法一:直接遍历列表,获取元素
for 元素 in 列表:
循环体

方法二:通过遍历获取每个元素的下标,然后再通过下标获取元素
for 下标 in range(len(列表)):
循环体

for 下标 in range(-1, -len(列表)-1, -1):
循环体

list1 = [10, 20, 45, 9]
for x in list1:
    print('x:', x)
    
for x in range(len(list1)):
    print(x, list1[x])

练习:求总分数和平均数

scores = [56, 89, 90, 23, 78, 82, 99, 67]
total = 0
for x in scores:
    total += x
print('总分:',total)
ptint('平均分:',total / len(scores))

增删改

*** 增 - 添加元素***

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

heroes = ['后裔', '鲁班7号', '曹操', '荆轲']
heroes.append('王昭君')
print(heroes)       # ['后裔', '鲁班7号', '曹操', '荆轲', '王昭君']

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

heroes.insert(2, '妲己')
print(heroes)       # ['后裔', '鲁班7号', '妲己', '曹操', '荆轲', '王昭君']

删 - 删除元素

del 列表[下标] - 删除列表中指定下标对应的元素(下标越界会报错)

heroes = ['后裔', '鲁班7号', '妲己', '曹操', '荆轲', '王昭君']
del heroes[-2]
print(heroes)       # ['后裔', '鲁班7号', '妲己', '曹操', '王昭君']

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

heroes.remove('妲己')
print(heroes)       # ['后裔', '鲁班7号', '曹操', '王昭君']

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

heroes = ['后裔', '鲁班7号', '妲己', '曹操', '荆轲', '鲁班7号', '王昭君']
x = heroes.pop()
print(heroes, x)       # ['后裔', '鲁班7号', '妲己', '曹操', '荆轲', '鲁班7号'] 王昭君

列表.pop(下标) - 取出列表中指定下标对应的元素,并且返回

x = heroes.pop(2)
print(heroes, x)       # ['后裔', '鲁班7号', '曹操', '荆轲', '鲁班7号']   妲己

改 - 修改元素的值

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

names = ['小明', '张三', '李四']
names[0] = '小花'
print(names)     # ['小花', '张三', '李四']

1.已知一个数字列表,求列表中心元素。

list1 = [2, 4 ,5 ,8 ,6 ,9]
if len(list1) % 2 == 0:
    print(list1[len(list1) // 2 -1] , list1[len(list1) // 2])
else:
    print(list1[len(list1) // 2])

2.已知一个数字列表,求所有元素和。

num1 = [2 , 6, 7, 8, 9]
sum1 = 0
for m in num1:
    sum1 += m
print(sum1)

3.已知一个数字列表,输出所有奇数下标元素。

num1 = [2 , 6, 7, 8, 9]
for x in range(len(num1)):
    if num1[x] %  2 != 0:
        print(x)

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

num1 = [2 , 6, 7, 8, 9]
for x  in num1:
    if x % 2 != 0:
        print(x)

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

nums = [1, 2, 3, 4]
for x in range(len(nums)):
    nums[x] *= 2
    print(nums[x] , end=',')

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

scores = [30 , 90 , 100 , 89 , 58 , 69 , 77 , 83]
max_scores = 30
min_scores = 30
for x in (scores):
    if x < min_scores:
        min_scores = x
    if x  > max_scores:
        max_scores = x
scores .remove(max_scores)
scores .remove(min_scores)
total = 0
for x in scores:
    total += x
print('平均分:',total / len(scores))

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]

A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []
for x in A:
    if x in B not in C
    	C.append(x)
print(C)

9.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

nums = [19, 89, 90, 600, 1]
max_nums = 19
for i in nums:
    if i > max_nums:
        max_nums = i
print(max_nums)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值