• (1)如果 list 的元素各不重复,如从 set 而来,

    可建立 value 与 index 的一一映射(list 中元素存在重复时,l.index[val] 返回的是第一个符合的索引):

    l[i]    ⇒ index => value
    l.index(val) ⇒ val => index
  • (2)注意区别 len() 和 list 的 count 函数(返回的不是 list 的长度,而是某元素出现的次数),

    >> len([0, 1, 1, 2])
    4
    >> [0, 1, 1, 2].count(1)
    2

1. list 的底层实现

Python 中的 list,不是由若干个独立节点相互引用而成的,而是一整块单一连续的内存区块——称之为(array),这必然导致了如下后果。

  • (1)尾部进(append(x)),尾部出(pop()),左端受限,风格上,接近 stack;
  • (2)前端的pop(0)(或insert(0, ))的操作时间都是线性级别的;

2. 成员函数的返回值

list 的大部分的成员函数返回值(更易型操作)都是为 NoneType 的:

  • (1).extend()
  • (2).append()
  • (3).remove()
  • (4).reverse()

所以,return l.extend(l2)这样的操作是无意义的,而应该转换为:

l.extend(l2)
return l

.pop() 无论含不含参数(含参:弹出指定位置的元素,不含参:弹出尾端的元素)是 list 的更易型操作,存在返回值;

3. pop() vs remove()

  • (0)两者都是对 list 的更易型操作

  • (1)pop() 接受的参数是下标,remove() 接收元素值;

    • 也即 pop() 根据下标删除元素,remove() 根据具体的元素值删除元素;

    • 也即如果我们能够比较容易拿到元素的下标,我们使用 pop,如果我们想要删除某一给定的值,则使用 remove()

    • index()成员函数架起了pop()和remove()之间的桥梁
      l.pop(l.index(v)) = l.remove(v)
      l.pop(idx) = l.remove(l[idx])

  • (2)pop() 返回下标对应的元素值,remove() 返回值为空,符合逻辑

  • (3)pop()接受参数为空,从尾部开始弹出

4. 二维列表(lists of lists)

二维列表用于刻画树结构

我们可将该树表示为一个二维列表(lists of lists):

>>> T = [['a, b'], ['c'], ['d', ['e', 'f']]]

5. extend vs append

>>> l1 = [1, 2]
>>> l1+1
TypeError: can only concatenate(连接) list (not "int") to list>>> l1 + [1]
[1, 2, 1]# list之间不适用数学运算# `+`表示的是之间的拼接

对比extend与append:

>>> l1.extend(l2)
>>> l1
[1, 2, 3, 4]# 等价于
>>> [l1.append(i) for i in l2]
[None, None]
>>> l1
[1, 2, 3, 4]
>>> l1.append(l2)
>>> l1
[1, 2, [1, 2]]# list是异质性(heterogeneous)容器

Python 进阶——重访 list相关推荐

  1. Python 进阶——重访 list (二)

    Python 进阶--重访 list 1. list 如果以切片的形式访问,不会提示 index out of range >> x = [1, 2, 3] >> x[4] I ...

  2. Python 进阶 —— 重访 tuple

    # tuple + tuple >> (1, ) + (2, 3) (1, 2, 3)>> x = x.reshape((1, ) + x.shape) # (150, 150 ...

  3. Python 进阶——重访 set

    成员查询在 list 是线性级的,而在 set 是常数级 成员的查询,list 和 set 都并未提供相关成员函数予以支持,而是使用 in+条件判断: In [1]: from random impo ...

  4. Python进阶之递归函数的用法及其示例

    作者 | 程序员adny 责编 | 徐威龙 封图| CSDN│下载于视觉中国 出品 |  AI科技大本营(ID:rgznai100) 本篇文章主要介绍了Python进阶之递归函数的用法及其示例,现在分 ...

  5. Python自学路线图之Python进阶

    Python自学路线图的第二个阶段是Python进阶学习,自学完后需要掌握的Python技能: 1.自学Linux操作系统,熟练使用Linux操作系统: 自学网络编程,掌握网络编程相关技术, 能够实现 ...

  6. 如果只推荐一本 Python 进阶的书,我要 Pick 它!

    作者 | 豌豆花下猫 今年二月初,我偶然看到了一条推特: <流畅的Python>一书的作者发布了一条激动人心的消息:他正在写作第二版! 如果要票选最佳的 Python 进阶类书目,这本书肯 ...

  7. 106页的《Python进阶》中文版(附下载)!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 推荐一本对Python感兴趣的书籍<Python进阶>,是<Inter ...

  8. Python进阶6——序列操作

    1.序列的拼接和复制 Python中使用+对序列进行拼接,使用*对序列进行复制 s=str(1234) l=list(range(2,13)) print(s,l) print('---------- ...

  9. Python 进阶之路 (九) 再立Flag, 社区最全的itertools深度解析(上)

    前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作效率,在sf社区内没 ...

最新文章

  1. python【蓝桥杯vip练习题库】ADV-356字符串的操作
  2. python3 日志检索异常抛出异常 raise KeyError(key),KeyError: 'formatters'
  3. mongodb创建用户名和密码_Python中使用MongoDB详解
  4. MySQL案例分析--QueryCache
  5. Filter的基本用法一
  6. linux如何查看所有的用户和组信息?
  7. AD 文档信息设置和制作模板
  8. 口罩热销卖断货,有的商家却坐地涨价,中国青年报:电商不该借机发疫情财...
  9. python cmdb_python相关cmdb系统
  10. 【trie树】HDU1251统计难题
  11. poj 匈牙利二分匹配 模板 poj题目
  12. 生物化学复习题I·蛋白质
  13. 鸡汤_产品经理职责概要
  14. 【CS】软件测试概念Software Testing
  15. 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
  16. Moment.js 用法
  17. [ROS2]数据回放伴侣Rviz+plotjuggler
  18. 合并代码,解决冲突,最简单方法!
  19. 时间序列分析-2 forecast 、predict
  20. DFS 简单的剪枝和状态压缩 海贼王之伟大航路

热门文章

  1. linux压缩隐藏文件,Linux下查看压缩文件内容的10种方法(小结)
  2. Yarn和SparkAlone对比
  3. oracle sequence 应用,oracle应用之使用sequence批量写数据
  4. Sklearn——用Sklearn实现线性回归(LinearRegression)
  5. python-opencv有效随机角度旋转
  6. java多线程(一)——创建与启动线程
  7. Java多线程——同步容器类
  8. thinkphp5做好的PHP项目上传服务器上,访问任何页面都只显示默认的欢迎页面
  9. 今天用pro安装nginx+php+mysql出现故障的解决方法
  10. Sun Solaris Sybae客户端”安装”日记