• 04-python的列表操作


    python中列表的使用最多, 常用的方法有: 

    append(value)
    extend(L)   添加指定列表的所有元素
    insert(index, value)    插入
    remove(value)
    pop(index)        不指定删除最后一个,
    clear()         清空
    count(value)    统计有多少个
    sort()          排序
    reverse()       到序
    copy()          潜复制

    对列表遍历的3种方式;

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 if __name__ == '__main__':
     4     list = ['html', 'js', 'css', 'python']
     5 
     6     # 方法1
     7     print '遍历列表方法1:'
     8     for i in list:
     9         print ("序号:%s   值:%s" % (list.index(i) + 1, i))
    10 
    11     print '
    遍历列表方法2:'
    12     # 方法2
    13     for i in range(len(list)):
    14         print ("序号:%s   值:%s" % (i + 1, list[i]))
    15 
    16     # 方法3
    17     print '
    遍历列表方法3:'
    18     for i, val in enumerate(list):
    19         print ("序号:%s   值:%s" % (i + 1, val))
    20 
    21     # 方法3
    22     print '
    遍历列表方法3 (设置遍历开始初始位置,只改变了起始序号):'
    23     for i, val in enumerate(list, 2):
    24         print ("序号:%s   值:%s" % (i + 1, val))

    其他的: 

    1, 列表推导式

    列表推到式, 从序列简单的创建列表
    将操作应用于序列的每个元素, 将其结果作为新的列表元素
    需要用 [], 元组用()
    每个列表推到是都在for之后创建一个表达式, 然后有0-多个 for或if子句, 返回结果
    是一个根据表达式从背后的for和if上下文环境中生成的列表, 如果希望推到出一个元组, 必须用口号
    # ×3 获取一个新的列表
    vec = [2, 4, 6]
    new_vec = [3 * x for x in vec]
    print(new_vec)
    
    # 获取一个map
    dict = [(x, x**2) for x in vec]
    print(dict)
    
    # 对序列中元素租个调用
    fruits = ['banana', 'apple', 'oragin']
    new_fruits = [fruit.upper() for fruit in fruits]
    print(new_fruits)
    
    # 使用if
    if_vec = [3 * x for x in vec if x > 3]
    print(if_vec)
    
    # 2个列表混搭的
    vec2 = [4, 6, -1]
    lista = [x * y for x in vec for y in vec2]
    listb = [vec[i] * vec2[i] for i in range(len(vec))]
    
    print(lista)
    print(listb)

    字典推导

    # 字典 推导
    new_dict = {x + 10: x**2 + 10 for x in range(10)}
    print(new_dict)

    2, 嵌套列表的转换

    比如, 我想把一个 3 * 4 的列表转换为 4 * 3 的列表

    matrix = [
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    ]
    
    new_matrix = [[row[i] for row in matrix] for i in range(4)]
    print(new_matrix)
    
    # 上面的相当于
    matrix_1 = []
    for i in range(4):
        matrix_1.append([row[i] for row in matrix])
    print(matrix_1)
    
    # 获取进一步改写
    matrix_2 = []
    for i in range(4):
        ineer = []
        for row in matrix:
            ineer.append(row[i])
            print(row[i], end=', ')
        print('---', row)
    print(matrix_2)
    
    for row in matrix:
        print(row)
    3, 使用enumerate进行遍历
    # 字典 推导
    new_dict = {x + 10: x**2 + 10 for x in range(10)}
    print(new_dict)
    
    # 字典的遍历
    for k, v in new_dict.items():
        print(k, v)
    # 返回索引的, dict返回key
    for i, v in enumerate(new_dict):
        print(i, v)
    
    # 遍历2个货更多的序列, 使用 zip(), 去最短的序列
    questions = ['name', 'quest', 'favorite']
    answers = ['lancelot', 'the', 'blue', 'abc']
    
    for q, a in zip(questions, answers):
        print(q, a)
    
    # 反向遍历集合
    for q in reversed(questions):
        print(q)

    enumerate返回的是一个迭代器对象, 里面包含一个yield, 可以返回函数的运行状态

    我们也可以使用yield来实现一个简单的迭代器



  • 相关阅读:
    Web 安全 —— XSS攻击的原理
    HTTP缓存
    JavaScript 事件循环机制(Event Loop)
    搭建前端监控系统
    电脑 直接下载cyida deb
    基于样例的传统图像修补算法实现
    Android WorkManager 定时任务
    Android WorkManager工作约束,延迟与查询工作
    微信小程序地图如何显示附近厕所WC步行路线
    物流解决方案再添利器 腾讯位置服务推出货运“三件套”
  • 原文地址:https://www.cnblogs.com/wenbronk/p/7119902.html
Copyright © 2020-2023  润新知