python基础语法5-数据结构

python内置的数据结构主要有列表list,元组tuple,字典dict,集合set这四种。今天主要说的是列表作为栈、队列、矩阵的使用,其他几种数据结构之前都有介绍到,朋友们可以翻看之前的文章。
1.列表的特征:
列表是可变的,即可对其中的元素进行修改、删除、增加
列表是有序的,每个元素位置固定,即可使用索引访问
列表中元素可以是python中的任意对象,即字符串、整数,元组、等等
列表的具体方法在之前的文章中已经讲到过,在这里就不赘述了,需要的可以点链接进去查看
https://mp.csdn.net/mp_blog/creation/editor/106108178
2.列表可以当做栈使用:
列表中的使用方法可以很方便的当做一个栈来使用,栈作为特定的数据结构,它遵循的是先进后出。示意图如下:

列表的append()可以在栈顶添加一个元素,pop()方法可以将一个元素从栈顶释放。
3.列表可以当做队列使用:
队列遵循的是先进先出。将列表当做队列使用其实效率并不是很好。
因为在列表的末尾添加和释放元素速度后很快,但是在列表的头部和中间插入弹出速度却不行,
因为涉及到操作的后面的元素挨个的都要移动位置。


4.列表推导式:
列表推导式提供了从序列创建列表,通常就是将一些操作运用到某个序列的每一个元素上从而将
其结果生成新在的列表中或者根据其判定条件创建子序列。所有通常列表推导式的后面经常跟有
for和if语句,for和if语句可以是0个或者多个。
通过列表推导式获得新的列表
>>> v = [1,3,5]
>>> [3*i for i in v]
[3, 9, 15]
>>> [[i, i**2] for i in v]
[[1, 1], [3, 9], [5, 25]]
>>> [3*i for i in v if i > 3]
[15]
>>> [3*i for i in v if i <= 3]
[3, 9]
>>> f = [' jack','lucy ','tom li']
>>> [i.strip() for i in f]
['jack', 'lucy', 'tom li']
>>> a = [2,4,6]
>>> b = [3,5,9]
>>> [i*j for i in a for j in b ]
[6, 10, 18, 12, 20, 36, 18, 30, 54]
>>> [i-j for i in a for j in b ]
[-1, -3, -7, 1, -1, -5, 3, 1, -3]
>>> [a[i]*b[i] for i in range(len(a))]
[6, 20, 54]
#列表推导式可以使用复杂表达式或者嵌套函数
>>> [str(round(355/112,i)) for i in range(1,9)]
['3.2', '3.17', '3.17', '3.1696', '3.16964', '3.169643', '3.1696429', '3.16964286']
5.列表嵌套实现矩阵:
m = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> [[r[i] for r in m] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
>>> t=[]
>>> for i in range(4):
    t.append([r[i] for r in m])
>>> t
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
>>> f=[]
>>> for i in range(4):
    tr=[]
    for r in m:
        tr.append(r[i])
    f.append(tr)
>>> f
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春风抚微霞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值