美文网首页Python 爬虫技术分享
Python list 的一些高级操作及注意事项

Python list 的一些高级操作及注意事项

作者: 终可见丶 | 来源:发表于2018-11-26 02:08 被阅读10次
  1. 列表生成式
    使用列表生成式,可以简化代码,并且不会有变量重名的烦恼(仅限于python 3.x 版本)。这也是网上流传的那些 仅凭一行Python代码却能做很多炫酷的事情 的一个重要组成部分。
In [1]: info = [i for i in range(10,50,10)]

In [2]: info
Out[2]: [10, 20, 30, 40]
  1. 列表切片与切片赋值
    切片是以前就已经掌握了,但是切片赋值还是第一次看到。同时需要注意的是切片的这个数字,拿示例代码来说,这个数字是2,按照我们的思维,[2:]是到第二个停下,[:2]是从第三个开始,这个容易记混。
In [2]: info
Out[2]: [10, 20, 30, 40]

In [3]: info[2:]
Out[3]: [30, 40]

In [4]: info[:2]
Out[4]: [10, 20]

In [5]: info[1:3] = [1, 2]

In [6]: info
Out[6]: [10, 1, 2, 40]
  1. 列表拆包(unpacking)
    这个算是对实际写代码途中,非常方便的一个功能了,这样子就可以省掉好多行赋值语句,直接改成一行就完事了。
In [2]: info
Out[2]: [10, 20, 30, 40]

In [7]: a, b, c, _ = info

In [9]: a ,b ,c
Out[9]: (10, 1, 2)

In [10]: a, b, c, *d = info

In [11]: a ,b ,c, d
Out[11]: (10, 1, 2, [40])
  1. 列表的引用
    这个是很容易犯错的一个地方,以为直接赋值,就可以复制一个对象过来了,而实际上只是增加了一次这个对象的引用。所以第一个方法解决方法,是info2 = info[:],从头到尾每个元素都复制一遍过来就好了。第二个办法就只有老老实实append
In [12]: info
Out[12]: [10, 1, 2, 40]

In [13]: info2 = info

In [14]: info2
Out[14]: [10, 1, 2, 40]

In [15]: info[1] = 20

In [16]: info
Out[16]: [10, 20, 2, 40]

In [17]: info2
Out[17]: [10, 20, 2, 40]

In [18]: many_info = [['_'] * 3] * 3

In [19]: many_info
Out[19]: [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]

In [20]: many_info[0][0] = '1'

In [21]: many_info
Out[21]: [['1', '_', '_'], ['1', '_', '_'], ['1', '_', '_']]
  1. 往有序数组/序列插入一个值,并使其继续保持有序
    这个用法在操作有序列表的时候非常方便,极大地减轻了工作量。
In [1]: import bisect

In [2]: a = [1, 4, 6, 8]

In [4]: bisect.insort(a, 3)

In [5]: a
Out[5]: [1, 3, 4, 6, 8]

In [6]: bisect.insort(a, 4)

In [7]: a
Out[7]: [1, 3, 4, 4, 6, 8]

相关文章

网友评论

    本文标题:Python list 的一些高级操作及注意事项

    本文链接:https://www.haomeiwen.com/subject/mrcvqqtx.html