Python 进阶——重访 list
(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相关推荐
- Python 进阶——重访 list (二)
Python 进阶--重访 list 1. list 如果以切片的形式访问,不会提示 index out of range >> x = [1, 2, 3] >> x[4] I ...
- Python 进阶 —— 重访 tuple
# tuple + tuple >> (1, ) + (2, 3) (1, 2, 3)>> x = x.reshape((1, ) + x.shape) # (150, 150 ...
- Python 进阶——重访 set
成员查询在 list 是线性级的,而在 set 是常数级 成员的查询,list 和 set 都并未提供相关成员函数予以支持,而是使用 in+条件判断: In [1]: from random impo ...
- Python进阶之递归函数的用法及其示例
作者 | 程序员adny 责编 | 徐威龙 封图| CSDN│下载于视觉中国 出品 | AI科技大本营(ID:rgznai100) 本篇文章主要介绍了Python进阶之递归函数的用法及其示例,现在分 ...
- Python自学路线图之Python进阶
Python自学路线图的第二个阶段是Python进阶学习,自学完后需要掌握的Python技能: 1.自学Linux操作系统,熟练使用Linux操作系统: 自学网络编程,掌握网络编程相关技术, 能够实现 ...
- 如果只推荐一本 Python 进阶的书,我要 Pick 它!
作者 | 豌豆花下猫 今年二月初,我偶然看到了一条推特: <流畅的Python>一书的作者发布了一条激动人心的消息:他正在写作第二版! 如果要票选最佳的 Python 进阶类书目,这本书肯 ...
- 106页的《Python进阶》中文版(附下载)!
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 推荐一本对Python感兴趣的书籍<Python进阶>,是<Inter ...
- Python进阶6——序列操作
1.序列的拼接和复制 Python中使用+对序列进行拼接,使用*对序列进行复制 s=str(1234) l=list(range(2,13)) print(s,l) print('---------- ...
- Python 进阶之路 (九) 再立Flag, 社区最全的itertools深度解析(上)
前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作效率,在sf社区内没 ...
最新文章
- python【蓝桥杯vip练习题库】ADV-356字符串的操作
- python3 日志检索异常抛出异常 raise KeyError(key),KeyError: 'formatters'
- mongodb创建用户名和密码_Python中使用MongoDB详解
- MySQL案例分析--QueryCache
- Filter的基本用法一
- linux如何查看所有的用户和组信息?
- AD 文档信息设置和制作模板
- 口罩热销卖断货,有的商家却坐地涨价,中国青年报:电商不该借机发疫情财...
- python cmdb_python相关cmdb系统
- 【trie树】HDU1251统计难题
- poj 匈牙利二分匹配 模板 poj题目
- 生物化学复习题I·蛋白质
- 鸡汤_产品经理职责概要
- 【CS】软件测试概念Software Testing
- 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
- Moment.js 用法
- [ROS2]数据回放伴侣Rviz+plotjuggler
- 合并代码,解决冲突,最简单方法!
- 时间序列分析-2 forecast 、predict
- DFS 简单的剪枝和状态压缩 海贼王之伟大航路
热门文章
- linux压缩隐藏文件,Linux下查看压缩文件内容的10种方法(小结)
- Yarn和SparkAlone对比
- oracle sequence 应用,oracle应用之使用sequence批量写数据
- Sklearn——用Sklearn实现线性回归(LinearRegression)
- python-opencv有效随机角度旋转
- java多线程(一)——创建与启动线程
- Java多线程——同步容器类
- thinkphp5做好的PHP项目上传服务器上,访问任何页面都只显示默认的欢迎页面
- 今天用pro安装nginx+php+mysql出现故障的解决方法
- Sun Solaris Sybae客户端”安装”日记