python学习day04

本文详细介绍了Python列表的基础知识,包括创建、拼接、重复、成员运算、比较运算、下标与切片操作。此外,还展示了如何通过循环遍历列表、增删改元素的方法,如append、insert、extend、pop、remove等。最后,讲解了列表的常用方法,如index、sum、max、min、reverse、sort、count,并介绍了列表推导式的应用,以及一些实战例子。
摘要由CSDN通过智能技术生成

python基础语法day4

一、列表

  • 列表,容器符号是[],数据类型是list
  • 列表是有序的数据类型(每个元素有自己固定的位置,叫做“下标”)
  • 列表是可变的(对列表中元素进行增删改操作)
  • 列表中可以保存任意类型的数据
  • 列表中允许出现重复的元素
  1. 列表的运算
list1 = [] # 空列表
list2 = list() # 通过构造器语法创建空列表;
print(list1, list2, list1 == list2)
list3 = [1, 1.1, True, 'abcc', [abc], None, (1,2,3), {'name':20}, {1,2,3}]
print(list3)
  1. 列表的拼接(生成一个新的列表)
print(list3 + list3)
  1. 列表的重复(生成一个新的列表)
print(list3 * 5)
  1. 成员运算 in、not in
print('abcd' in list3)  # True
print('bcda' not in list3)  # False
print(1 in list3)  # True
print([1] in list3)  # False
  1. 比较运算:列表之间可以比较大小

容器型数据类型比较大小,比较的是相同位置的第一队相同数据类型不同子元素的大小

list4 = [1, 2, 3, 4]
list5 = [1, 2, 4, 5]
print(list4 > list5)  # list4 < list5 --True

list6 = [1, 2, 3, 4]
list7 = [1, 2, 4, 3]
print(list6 == list7)  # list6 < list7 --True

二、列表的下标和切片

  • 列表中每个元素都有自己的位置(下标)
  • 分为正向下标和负向下标
  • 正向下标:从左向右,从0开始
  • 负向下标:从右向左,从-1开始
  1. 通过下标获取元素:有序容器[下标数字]
list1 = ['英雄联盟', 'CS:GO', '超级马里奥', '原神', '魂斗罗', '王者荣耀', 'PUBG']
print(list1[2] == list1[-5])
print(list1[2])
print(list1)
  1. 切片:获取有序容器中某一部分元素,得到的结果是和原容器相同类型的容器
  • 有序容器[M:N:step] --左开右闭[M,N)
  • 切片中正下标和负下标可以混用
  • 开始不写,结束写表示从头取到指定下标;反之从指定下标到末尾
print(list1[0:7])
print(list1[0:7:3])
print(list[1:-2:3])  # ['CS:GO','魂斗罗']
print(list[-1:-8:-1])  # ['PUBG','王者荣耀', '魂斗罗', '原神', '超级马里奥', 'CS:GO', '英雄联盟']
print(list[:])  # ['英雄联盟', 'CS:GO', '超级马里奥', '原神', '魂斗罗', '王者荣耀', 'PUBG']
print(list[::-1])  # ['PUBG','王者荣耀', '魂斗罗', '原神', '超级马里奥', 'CS:GO', '英雄联盟']
print(list1[::-3])  # ['英雄联盟', '原神', 'PUBG']

注意:

  • 通过下标获取元素,下标不能越界
    print(list1[100]
  • 在切片中允许下标越界
    print(list1[1:100000])

练习题:
list1 = [‘英雄联盟’, ‘CS:GO’, ‘超级马里奥’, ‘原神’, ‘魂斗罗’, ‘王者荣耀’, ‘PUBG’]

  • 获取英雄联盟、PUBG
  • 获取’原神’
  • 获取[‘王者荣耀’,‘原神’,‘CS:GO’]
  • 获取[‘魂斗罗’, ‘原神’, ‘超级马里奥’]
# 获取英雄联盟、PUBG
print(list1[0:7:6])
print(list1[-7:7:6])
print(list1[::6])
print(list1[-7::6])
# 获取'原神'
print(list1[3])  print(list1[-4])
# 获取['王者荣耀','原神','CS:GO']
print(list1[-2:7:-2])
# 获取['魂斗罗', '原神', '超级马里奥']
print(list1[-3:1:-1])
print(list1[-3:-6:-1])

三、列表的循环遍历

  1. 直接遍历
list1 = ['A', 'B', 'C', 'D']
for i in list1:
    print(i)
  1. 间接遍历
list1 = ['A', 'B', 'C', 'D']
# len():获取有序容器的长度
print(len(list1))
for index in range(len(list1)):
    print(f'{index} --> {list1[index]}')

  1. enumerate():能够将列表中的每个元素及其下标放到一个元组中,多个元组组成一个可迭代对象(能够做遍历)
print(enumerate(list1))
for content in enumerate(list1):
    print(content)

三、列表的增删改

list1 = ['Java', 'Python', 'C']

append:追加,向列表的末尾添加元素

list1.append('HTML')
print(list1)

insert:插入,向列表的任意位置添加元素

list1.insert(0, 'C++')
print(list1)

extend:追加,从一个容器中将所有元素添加到列表中

list1.extend('123')
list1.extend(['Going', 'UI'])
print(list1)
# ['Java', 'Python', 'C', '1', '2', '3', 'Going', 'UI']

有序容器【下标】 = 值

list1[5] = 'Java'
print(list1)

del:del有序容器[下标],若下标越界,会报错;

del list1[6]
print(list1)

remove:根据元素删除,从左到右删除,如果某个元素重复,一次只删除1个

list1.remove('3')
list1.remove('Java')
print(list1)

pop

  • pop如果不给pop指定元素,删除的是列表中最后一个元素;或者给pop指定下标
  • pop方法可以告诉你删除的是哪个元素
list1.pop()
print(list1)
print(list1.pop(0))
print(list1)

clear

list1.clear()
print(list1)

四、列表的相关方法

  1. 查找列表中元素:index
  • index 方法默认从左向右查找,找到元素立即停止查找,返回下标
  • 可以指定index开始查找元素的位置,index找不到元素会报错
list1 = ['Java', 'python', 'Java']
result = list1.index('Java')
print(result)
result1 = list1.index('Java', 1)
print(result1)
  1. sum、max、min操作对象必须是数字(列表中全是数字)
num_list = [1, 2, 3, 4, 5]
print(sum(num_list))
print(max(num_list))
# print(5 > 'a')  # TypeError: '>' not supported between instances of 'int' and 'str'
  1. reverse:将列表倒序
num_list = [1, 2, 3, 4, 5]
num_list.reverse()
print(num_list)
  1. sort、sorted:对列表排序
  • sort默认升序排序,修改列表本身。如果reverse=True,降序排列
  • sorted默认升序排序,不修改原列表,如果reverse=Ture,降序排序
list2 = [2, 5, 1, 7, 0]
list2.sort()
list2.sort(reverse=True)  # 逆序
print(list2)

list3 = [2, 5, 1, 7, 0]
print(sorted(list3), list3)
print(list3)
  1. count:统计某个元素出现次数
list3 = [2, 5, 1, 7, 0]
print(list3.count(2))
print(list3.count(9))

五、列表的推导式

列表推导式(列表生成式)

生成有元素的列表(在某些场景下能代替append)

性能比较:列表推导式 > append

  1. [表达式 for 变量 in 容器]
# 将100以内5的倍数添加到列表中
# 使用append方法
list1 = []
for i in range(0, 101, 5):
    list1.append(i)
print(list1)
# 使用列表推导式
list2 = [ i for i in range(0, 101, 5)]
print(list2)
  • 将某个元素在列表中重复N次
  • 如果for中变量没有实际意义,可以使用下划线”_“代替
# 列表中[1,2,3]生成10个该元素
list3 = [[1, 2, 3] for _ in range(10)]
print(list3)
  1. [符合条件的表达式 for 变量 in 容器 if 条件]
list4 = [i for i in range(101) if i % 5 == 0]
print(list4)
list5 = [True if i % 5 == 0 else False for i in range(11)]
print(list5)
  1. [表达式 for 变量i in 容器1 for 变量2 in 容器2]
list6 = [f'{i} * {j} = {i * j}' for i in range(1, 10) for j in range(1, i+1)]
print(list6)

列表推导式的换行

import random
score = [[random.randint(0, 100) for _ in range(3)] for _ in range(5)]
print(score)

score1 = [
    [random.randint(0, 100) for _ in range(3)]
    for _ in range(5)
]
print(score1)
num = 1 \
    + \
    2 \
    + \
    3 + \
    4 + 5 + 6 + \
    10
print(num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值