zoukankan      html  css  js  c++  java
  • python列表与元组

    python列表与元组

    列表与元组

    python中最基础的两种集合,区别:列表是动态的,大小可以改变,元组是不可变的,一旦创建就不能修改
    ,因为不变性,所以元组是可哈希的。

    列表的介绍

    列表是对其他对象的引用组成的连续数组,因为是数组,所以数组有的优点列表都有,查找效率比链表高,插入与删除的操作效率比链表低。python的列表不是链表,需要真正的链表的时候,python在内置collections模块中提供了deque(双端队列),他是栈和队列的一般化(是双向链表)

    列表推导

    在使用常规的for循环往列表中添加数据时,因为python是解释型语言,解释器每次循环都需要判断序列中需要修改的部分,并且需要用一个计数器来跟踪需要处理的元素,并且在添加时使用append()方法是列表方法,,每次遍历还需要额外执行查找append函数的查询函数,列表推导正式解决这个问题的正确方法,它对上述一部分做了自动化处理,提高了效率
    普通for循环添加数据

    events=[]
    for i in range(10):
        if i%2==0:
            events.append(i)
    

    使用列表推导

    events=[i for i in range(10) if i%2==0]

    enumerate(枚举)

    在循环使用序列时,都可以使用枚举这个内置函数获取其索引,不止列表可以,但凡是序列类型的都可以,包括字符串:

    for i,e in enumerate('hello'):
    ... print(i,e)
    ...
    0 h
    1 e
    2 l
    3 l
    4 o

    如果需要合并多个列表中的元素,可以使用内置的zip()函数。对两个大小相等的可迭代对象进行均匀遍历时,

     for item in zip([1,2,3],[4,5,6]):
    ... print(item)
    ...
    (1, 4)
    (2, 5)
    (3, 6)

    调用两次zip时,可将其恢复原状

     for item in zip(*zip([1,2,3],[4,5,6])):
    ... print(item)
    ...
    (1, 2, 3)
    (4, 5, 6)

    zip([1,2,3],[4,5,6])返回的是地址名,只有使用指针*zip([1,2,3],[4,5,6])才可以有返回值

    序列解包

    使用任意序列类型,只要赋值运算符左边的变量数目与序列中的元素数目相等,都可以将序列中的元素解包到左边的变量中去

    a,b,*c='hello'
    >>> a
    'h'
    >>> b
    'e'
    >>> c
    ['l', 'l', 'o']
    使用*号
    >>> a,*b,c=0,1,2,3
    >>> a,
    (0,)
    >>> b
    [1, 2]
    >>> c
    3
    嵌套解包
    >>> (a,b),(c,d)=(1,2),(3,4)
    >>> a
    1
    >>> b
    2
    >>> c
    3
    >>> d
    4
  • 相关阅读:
    算法与数据结构基础(一)排序基础1.选择排序
    Comparable和Comparator 是什么以及区别
    IE浏览器兼容性调整总结技巧
    css属性总结
    spring入门详细教程(五)
    Spring入门详细教程(一)
    Spring入门详细教程(四)
    2018年终总结(一只刚毕业的程序猿)
    Spring入门详细教程(三)
    Spring入门详细教程(二)
  • 原文地址:https://www.cnblogs.com/dcotorbool/p/8117969.html
Copyright © 2011-2022 走看看