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

转载于:https://www.cnblogs.com/dcotorbool/p/8117969.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值