python之列表

python条件控制语句

python之列表

序列:

一种数据结构 指计算机中数据的存储方式 有顺序 通过索引加以操作

  • 序列的分类:
    可变的序列 列表
    不可变的序列 字符串
    在这里插入图片描述

列表

列表的概念:

是python中的一种对象,可以保存多个有序的数据。

  • 注意:索引是从零开始的,依次向下类推,并且每一个元素之间要用逗号分隔开
list = [1,2,3,4,5]# 创建一个列表,通过[]来进行创建
print(list,type(list))
list = [1,'hello',None,[1,2,3,4,5],True]# 列表可以保存任意的对象
print(list)
list = [1,2,3,4,5]
print(list,type(list))
print(list[1])#我们可以通过索引(index)来获取列表中的元素
# print(list[5])# 超过索引的最大值,会进行报错
print(len(list))# 通过len()函数获取列表的长度或者是元素的个数,获取的列表长度其实是列表的最大索引值加1
print(list[-4])# 索引值可以是负数,-1表示的是最后一个,-2表示的是倒数第二个,以此类推。
[1, 2, 3, 4, 5] <class 'list'>
[1, 'hello', None, [1, 2, 3, 4, 5], True]
[1, 2, 3, 4, 5] <class 'list'>
2
5
2
切片

指从现有列表中获取一个子列表
语法:列表[开始:结束:步长]

hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print(hero)
print(hero[0:2])# 通过切片来获取指定的元素时,会包含起始位置的元素,不会包含结束位置的元素
print(hero)# 切片获取列表时,只会返回一个新的列表,不会对原来的列表产生影响
# 如果省略结束位置会从当前的开始位置一直截取到最后
print(hero[1:])
# 如果省略开始位置则会从第一个元素截取到结束位置的元素,但是不包括结束位置的元素
print(hero[:3])
# 如果省略开始位置和结束位置,则会从第一个元素截取到最后一个元素
print(hero[:])
# 步长表示每次获取元素的间隔,默认值为1,可以省略
print(hero[0:5:1])
print(hero[0:5])
print(hero[::2])
print(hero[::-2])# 步长可以为负数,表示的是从后向前截取
# print(hero[::0])# 步长不可以为0
['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
['钢铁侠', '绿巨人']
['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
['绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
['钢铁侠', '绿巨人', '蜘蛛侠']
['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇']
['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇']
['钢铁侠', '蜘蛛侠', '黑寡妇']
['蚁人', '美国队长', '绿巨人']
通用方法
+

+可以将两个列表拼接成一个列表

list= [1,2,3,4] + [5,6,7,8]
print(list)
[1, 2, 3, 4, 5, 6, 7, 8]
  • *
  • 可以和整数相乘,就可以把列表重复指定的次数
# list = [1,2,3] * [4,5,6,7]列表之间不能够相乘
list = [1,2,3] * 2
print(list)
[1, 2, 3, 1, 2, 3]
in 和not in

in用来检测指定的元素是否在列表中,如果在就返回True,不在则返回False
not in用来检测指定的元素是否不在列表中,如果不在就返回True,如果在就返回False

hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print('绿巨人' in hero)
print('录' not in hero)
True
True
min()和max()

min()获取列表中的最小值
max()获取列表中的最大值

list = [100,78,5,99]
print(max(list),min(list))
100 5
两个方法

y. xxx()
list.index()列表对象 获取指定元素在列表中的位置
index()第一个参数表示要查找的元素第二个参数表示查找的起始位置,第三个表示要查找的结束位置

hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print(hero.index('蜘蛛侠',1,4))
2

list.count()统计指定元素在列表中的次数

hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print(hero.count('煎饼侠'))
0
修改列表

修改列表的几种方法:

  • 通过索引值进行修改
hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print('修改前',hero)
hero[0] = '雷神'# 将钢铁侠替换成雷神
print('修改后',hero)
修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
修改后 ['雷神', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
  • 通过del 来进行修改,用来删除元素
    del 列表名[索引值]
hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print('修改前',hero)
del hero[2]
print('修改后',hero)
修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
修改后 ['钢铁侠', '绿巨人', '美国队长', '黑寡妇', '蚁人']
  • 通过切片来进行修改,但是传递的必须是一个序列
  • 注意:当设置了步长的时候,序列中的元素的个数必须和切片中元素的个数保持一致
hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
print('修改前',hero)
hero[0:3] = 'abcd'
print('修改后',hero)# 将第一个到第三个元素替换成abcd
hero[0:2] = ['黑豹','雷神','灭霸']
print('修改后',hero)
hero[0:0] = ['雷神']# 表示向索引值为0的地方插入元素
print('修改后',hero)
# 可以通过切片来删除元素
hero[1:3] = []
print('修改后',hero)
修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
修改后 ['a', 'b', 'c', 'd', '美国队长', '黑寡妇', '蚁人']
修改后 ['黑豹', '雷神', '灭霸', 'c', 'd', '美国队长', '黑寡妇', '蚁人']
修改后 ['雷神', '黑豹', '雷神', '灭霸', 'c', 'd', '美国队长', '黑寡妇', '蚁人']
修改后 ['雷神', '灭霸', 'c', 'd', '美国队长', '黑寡妇', '蚁人']
列表方法

yyy.xxx()为方法
常用的方法有:
yyy.append(参数1)向列表的最后添加一个元素,参数为要向列表中添加的值
yyy.insert(参数1,参数2)向列表指定的位置添加一个元素,参数1是要插入元素的位置,参数二是要插入的元素
yyy.extend()使用新的序列来扩展当前的序列
yyy.pop()根据索引删除并返回指定的元素,如果没加索引值则会删除第一个元素
yyy.reverse()反转列表
yyy.sort()用来对列表中的元素进行升序排列
yyy.clear()清空列表

# 列表方法
hero = ['钢铁侠','绿巨人','蜘蛛侠']
print('修改前',hero)
hero[2] = 'b'
hero.append('黑寡妇')
print('修改后',hero)
hero.insert(2,'黑寡妇')
print('修改后',hero)
# hero.extend(123)
hero.extend(['黑寡妇','蚁人'])
print('修改后',hero)
# hero.extend(['黑寡妇','蚁人']) 相当于hero += ['黑寡妇','蚁人']
print('修改后',hero)
hero.clear()
print('修改后',hero)
hero = ['钢铁侠', '绿巨人', '蜘蛛侠', '美国队长', '黑寡妇', '蚁人']
hero.pop(2)
print('修改后',hero)
reslut= hero.pop()
print(reslut)
hero.remove('绿巨人')
print('修改后',hero)
# reslut= hero.remove('绿巨人')
print(reslut)
# reverse()反转列表
hero.reverse()
print(hero)
遍历列表

遍历列表指的就是将列表中的元素取出来

while 条件表达式:
	代码块
# while循环遍历列表
hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
i = 0
while i < len(hero):
    print(hero[i])
    i += 1
钢铁侠
绿巨人
蜘蛛侠
美国队长
黑寡妇
蚁人
for 变量 in 序列:
  代码块

range(5) -->range(0,5) -->range(0,5,1)结果是[1,2,3,4]

hero = ['钢铁侠','绿巨人','蜘蛛侠','美国队长','黑寡妇','蚁人']
h = 0
# 用for循环来遍历列表
for h in hero:
    print(h)
钢铁侠
绿巨人
蜘蛛侠
美国队长
黑寡妇
蚁人

这说明h对应了列表中的每一个元素,for循环的代码块,序列中有几个元素就要执行几次,每执行一次就会让序列中的元素赋值给变量。
range()有三个参数
开始:默认是0可以省略 range(5) range(0,5)
结束:不包含结束 range(0,5) 结果是[0,1,2,3,4]
步长:默认是1 range(0,5)等价于range(0,5,1)等价于range(5),结果是[0,1,2,3,4]

lst = [1,2,3,4,5,6,7,8,9]
# 获取列表中的奇数
for i in range(0,9,2):
	print(lst[i])

案例一:有两个列表l1 =[11,22,33] l2 =[22,33,44]获取内容相同的元素列表

# 创建两个列表
l1 = [11, 22, 33]
l2 = [22, 33, 44]
for i in l1:
    # print(i)
    for j in l2:
        # 用嵌套循环遍历两个列表
        # print(j)
        if i == j:
            # 如果两个列表中的值相等,则获取并且打印列表中的值
            print(i)
22
33

案例二:不用函数进行反转列表并写出推导过程

# 创建一个列表并赋值
l3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 方案一:通过reverse()方法进行反转列表
l3.reverse()  # [9, 8, 7, 6, 5, 4, 3, 2, 1]
print(l3)
# 方案二:通过切片进行反转列表
l3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l3[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1]
# 切片:列表[开始位置:结束位置:步长]
# 如若开始位置不写
l3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l3[:8:1])  # [1, 2, 3, 4, 5, 6, 7, 8]
# 由此可见如果开始位置不写,则会从第一个元素截取到结束位置的元素,但是不包括结束位置的元素
# 如若结束位置省略
l3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l3[1::1])  # [2, 3, 4, 5, 6, 7, 8, 9]
# 由此可见如果结束位置省略,则会从当前的位置的元素一直截取到最后一个元素
# 如果开始位置和结束位置都省略呢
l3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l3[::1])  # [1, 2, 3, 4, 5, 6, 7, 8, 9],
# 由此可见如果开始位置和结束位置都省略,则会从第一个位置的元素一直截取到最后一个位置的元素
# 如若开始位置和结束位置省略并且步长为负数呢?
l3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l3[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1]
# 由此可见如果开始位置和结束位置都省略并且步长为-1的时候会对列表进行反转
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8]
[2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

案例三:给用户九次机会猜1-10个数字随机来猜数字,如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误,最终结果要求用户怎么也猜不对

import random
lst = []# 保存用户猜过的数字
for i in range(9):
    number = int(input('请输入一个数字:'))
    lst.append(number)# 将用户猜过的数字添加到列表中
    print('对不起,没有猜对')
while True:
    number_x =random.randint(1,10)# 1 <= number_x <=10
    # 判断
    if number_x in lst:
        continue# 跳出循环
    else:
        break# 退出循环
print('正确号码',number_x)
请输入一个数字:1
对不起,没有猜对
请输入一个数字:2
对不起,没有猜对
请输入一个数字:3
对不起,没有猜对
请输入一个数字:4
对不起,没有猜对
请输入一个数字:5
对不起,没有猜对
请输入一个数字:6
对不起,没有猜对
请输入一个数字:7
对不起,没有猜对
请输入一个数字:8
对不起,没有猜对
请输入一个数字:9
对不起,没有猜对
正确号码 10

下节:Python之元组 字典 集合

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45671732

你们鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值