您的位置:首页 > 编程语言 > Python开发

我的Python学习笔记_Day4 列表1

2020-01-14 11:23 155 查看

文章目录

  • 2. 查(获取列表中的元素)
  • 3. 增删改
  • 作业
  • 作业解答from老师
  • 列表1

    1. 列表的基础语法

    1)什么是列表(list)

    列表是python提供的一种容器型数据类型
    以[]作为容器的标志,里面多个元素用逗号隔开:
    [元素1, 元素2, 元素3, …]
    列表是可变的、有序的、支持下标操作

    2)列表元素

    列表中的元素可以是任何类型的数据
    同一个列表中的元素的类型可以不同

    [1, 0.1, True, 'abc', [1, 2], {1, 2}, (1, 2), {'name':100}, function, 60 + 2]

    2. 查(获取列表中的元素)

    1)获取单个元素

    a. 语法:

    列表[下标]

    b. 说明

    获取列表中指定下标对应的元素

    代码 说明
    列表 列表值,保存列表的变量,结果是列表的表达式
    [] 固定写法
    下标 列表中每一个元素对应一个下标,来表示这个元素在列表中的位置:
    0 ~ len(list) - 1
    -1 ~ -len(list) 负一表示最后一个元素
    2)获取部分元素(切片)

    a. 语法

    列表[开始下标:结束下标:步长]
    列表[M: N: step]

    [M, N) 同range一样,左闭右开,结束下标取不到!

    相当于:

    获取range(M, N, step)产生的数字序列作为下标对应的所有元素

    注意:列表切片的结果还是列表,新列表中的元素是原列表元素的一部分

    b. 说明

    步长为正,是从前往后取,要求M < N
    步长为负,是从后往前取,要求M > N
    否则,结果是[](空列表)

    c. 特别用法

    代码形式 说明 详说明
    列表[开始: 结束] 省略步长 相当于步长是1
    列表[: 结束: 步长]
    列表[: 结束下标]
    省略开始下标 相当于从第一个元素取(步长为正)
    相当于从最后一个元素取(步长为负)
    列表[开始: : 步长]
    列表[开始:]
    省略结束下标 从该方向取到最后一个元素
    列表[: : 步长]
    列表[:]
    省略开始下标和结束下标 从该方向从头取到尾
    3)遍历列表

    将列表中的元素一个一个取出来

    a. 直接遍历获取元素

    for 变量 in 列表:
    循环体
    animals = ['cat', 'dog', 'pig']
    for animal in animals:
    print(animal)

    b. 通过下标遍历

    animals = ['cat', 'dog', 'pig']
    length = len(animals)
    for index in rang(length):
    print(animals[index])
    4)下标越界

    只有切片时允许下标越界,其他情况报错

    3. 增删改

    1)增

    a. append

    代码形式 说明
    列表.append(元素) 在列表的末尾增加一个元素

    b. insert

    代码形式 说明
    列表.insert(下标, 元素) 在指定的下标前插入一个元素

    c. extend

    代码形式 说明
    列表.entend(列表) 将一个列表的元素依次逐一到指定列表里
    my_list = [1, 2]
    my_list.extend([1, 3, 4])
    print(my_list)
    # 结果  [1, 2, 1, 3, 4]
    2)删

    a. del

    代码形式 说明
    del 列表[下标] 删除指定下标对应的元素

    b. remove

    代码形式 说明
    列表.remove(元素) 删除指定元素

    注意:如果元素不存在会报错
    如果要删除的元素在列表里有多个,只删除遇到的第一个

    c. pop(返回一个元素)

    代码形式 说明
    变量 = 列表.pop() 弹出列表中的最后一个元素
    变量 = 列表.pop(下标) 弹出列表中指定下标的元素

    随堂练习:

    """
    删除下面这个列表中所有小于60是元素
    """
    
    scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
    
    for score in scores.copy():
    if score < 60:
    scores.remove(score)
    
    print(scores)
    3)改
    代码形式 说明
    列表[下标] = 值 将指定下标对应的元素修改成特定的值

    另外,这篇文章总结的挺不错https://blog.csdn.net/weixin_42589922/article/details/80883726

    作业

    """1. 已知一个数字列表,求所有元素和。"""
    
    def sum_list(list_need_sum):
    """列表元素求和"""
    return sum(list_need_sum)
    
    """2. 已知一个数字列表,输出所有奇数下标元素的列表。"""
    
    def get_odd_index(list_need_odd):
    """返回奇数下标元素的列表"""
    return list_need_odd[1::2]
    
    """3. 已知一个数字列表,输出所有元素中,值为奇数的元素。"""
    
    def get_odd_num(list_need_odd):
    """返回奇数元素"""
    return [i for i in list_need_odd if i & 1 != 0]
    
    """4. 已知一个数字列表,将所有元素乘二。"""
    
    def double_list(list_need_double):
    """返回每个元素double的列表"""
    return [i * 2 for i in list_need_double]
    
    """5. 列表去重"""
    
    def unti_repeat(list_need_clear_repeat):
    """列表去重"""
    return list(set(list_need_clear_repeat))
    
    """6. 将数字列表(0~6535) 转换成数字对应的字符列表"""
    
    def exchange_ascii(list_need_exchange):
    """数字转字符"""
    return [chr(i) for i in list_need_exchange]
    
    """7. 有两个列表A和B,使用列表C来获取两个列表中公共的元素"""
    
    def get_intersection(list1, list2):
    """获取交集元素"""
    # 这里用列表会有重复,所以用集合
    return set(i for i in list1 if i in list2)
    
    """8. 获取列表中的最大值(without max())"""
    
    def get_max_num(list1):
    """求最大值"""
    # 这里用冒泡排序中的一个循环来做此题,虽然麻烦
    for i in range(len(list1) - 1):
    if list1[i] > list1[i + 1]:
    list1[i], list1[i + 1] = list1[i + 1], list1[i]
    return list1[-1]
    
    """9. 获取列表中出现次数最多的元素"""
    
    def get_most_num(list1):
    """获取最多元素"""
    # count方法太无聊,就不写了,尝试用集合来弄
    while len(set(list1)) != len(list1):
    for num in set(list1[:]):
    list1.remove(num)
    return list1

    作业解答from老师

    # 6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
    # 例如:names = ['张三', '李四', '大黄', '张三'] -> names = ['张三', '李四', '大黄']
    # 方法一:
    names = ['张三', '张三', '张三', '李四', '李四','大黄', '张三', '小明', '张三','李四']
    index = 0
    while index < len(names):
    n1 = names[index]
    index2 = index + 1
    while index2 < len(names):
    if n1 == names[index2]:
    del names[index2]
    continue
    index2 += 1
    
    index += 1
    
    print(names)
    
    # 方法二
    names = ['张三', '张三', '张三', '李四', '李四','大黄', '张三', '小明', '张三','李四']
    names = list(set(names))
    print(names)
    
    # 8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
    list9 = [60, 70, 89, 90, 88, 92, 97, 95]
    sum1 = 0
    max1 = list9[0]
    min1 = list9[0]
    for num in list9:
    # 求和
    sum1 += num
    # 求最大值
    if num > max1:
    max1 = num
    # 求最小值
    if num < min1:
    min1 = num
    • 点赞 1
    • 收藏
    • 分享
    • 文章举报
    fhlsyol 发布了23 篇原创文章 · 获赞 23 · 访问量 1087 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: