关于列表和字典的使用注意
来源:互联网 发布:如何看待韩国 知乎 编辑:程序博客网 时间:2024/06/06 07:11
列表
理解
- 列表可以包含任何种类的对象:数字,字符串甚至其他列表。通过偏移存取。列表是可变对象,支持在原处修改的操作。在标准Python解释器内部,列表就是C数组而不是链接结构。
- 在列表中使用嵌套列表时,有事需要将几次索引操作连在一起使用来深入到数据结构中去。最简单的方法之一是将其表示为矩阵(二维数组),在Python中相当于嵌套了子列表的列表。
索引与切片的赋值
- 索引和分片都是在原地修改,而不是生成新的列表作为结果。在分片赋值中,最好分成两步来理解:
1.删除。删除等号左边指定的分片。
2.插入。将包含在等号右边对象中的对象中的片段插入旧分片被删除的位置。
实际情况并非如此,但有助于理解为什么插入元素的数目不需要与删除的数目相匹配。因此分片赋值能够用来替换(覆盖)、增长(插入)、缩短(删除)主列表。但通常还有更简单直接的方式实现替换、插入以及删除。(例如合并、insert、pop、remove、等方法)
列表方法
append
,能够简单的将一个单项价值列表末端。与合并不同的是,append允许传入单一对象而不是列表。L.append(x)
与L+[x]
的结果类似,不同的是,前者回原地修改L,而后者会生成的列表。sort
,原地对列表进行排序,默认以递增的顺序进行排序。reverse
参数允许排序按照降序而不是升序进行。>>>L = ['abc', 'ABD', 'aBe']>>>L.sort() # Sort with mixed case>>>L['ABD', 'aBe', 'abc'] >>>L = ['abc', 'ABD', 'aBe']>>> L.sort(key=str.lower) # Normalize to lowercase>>> L ['abc', 'ABD', 'aBe']>>>>>> L = ['abc', 'ABD', 'aBe']>>> L.sort(key=str.lower, reverse=True) # Change sort order>>> L ['aBe', 'ABD', 'abc']
append
和sort
原处修改相关的列表对象,而结果并没有返回列表。(从技术上讲,两者值皆为None)。一部分原因是这样的限制,排序也在最近的Python中可以作为内置函数使用了,它可以排序任何集合,并且针对结果返回一个新的列表(而不是原处修改):>>>L = ['abc', 'ABD', 'aBe'] >>>sorted(L, key=str.lower, reverse=True) # Sorting built-in ['aBe', 'ABD', 'abc']>>>L = ['abc', 'ABD', 'aBe'] >>>sorted([x.lower() for x in L], reverse=True) # Pretransform items: differs! ['abe', 'abd', 'abc']
del语句删除,可以在原处删除某项或某片段:
>>>L['spam','eat','more','please']>>>del L[0]['eat','more','please']>>>del L[1:]>>>L['eat']#也可以通过将空列表赋值给分片来删除列表片段>>>L=['already','got','one']>>>L[1:]=[] #会删除左边的分片,然后什么也不插入。>>>L['already']>>>L[0]=[] #另一方面,将空列表赋值给一个索引只会在指定的位置存储空列表的引用,而不是删除>>>L[[]]
字典
理解
字典与列表的区别:如果把列表看作是有序的对象集合,那么就可以把字典看作无序的集合。字典当中的元素是通过键来存取的,而不是通过偏移存取,固定从左到右的顺序操作(例如分片和合并)不适用于字典,设计目的是为了执行键查找(散列查找)。
>>>D={'spam': 2 , 'ham': 1, 'eggs': 3}>>>'ham' in DTrue>>>list(D.keys())['eggs','ham','spam']
它能够检查某个键是否存储在字典中,从技术上来讲,是因为字典定义了单步遍历keys列表的迭代器。
其他字典方法
values和items分别返回字典的值列表和(key,value)对元组(和keys意一样,将它们放入在一个list调用中,来收集它们的值以显示)。读取不存在的键时会报错,然而键不存在时,通过get方法能够返回默认值。这是在当键不存在时为了避免missing-key错误而填入默认值的一个简单方法。
#避免missing-key至少有三种方式#get方法>>>D.get('spam')2>>>print(D.get('toast'))None>>>D.get('toast',88) 88#if语句if('spam') in D: print(D['spam'])else: print(0)#try语句try: print(D['spam'])except KeyError: print(0)
- pop,可以从字典中通过删除一个键并删除它的值,不同于列表删除一个可选位置。
- 注意事项:
1.序列运算无效:没有顺序的概念,有序合并和分片的运算不能用
2.对新索引赋值会添加项:当编写字典常量时或者向现有字典对象的新键赋值时,都会生成键。最终的结果是一样的。
3.键不一定总是字符串。 组建字典的四种方法:
{'name':'mel' , 'age': 45} #1D = {} #2D['name'] ='mel'D['age']=45dict(name='mel',age=45) #3dict([('name','mel'),('age',45)]) #4 dict.fromkeys(['a','b'],0) #5适用于所有键的值都相同{k:0 for k in 'ab'} #6使用字典解析
- 在pyhton 3.0 中不再用has__key方法,而以in取代。
摘自< Learning Python.4th>
0 0
- 关于列表和字典的使用注意
- 字典和列表的区别
- 字典和列表的区别
- 关于初始化参数列表使用注意
- Python列表和字典参数使用
- 使用sorted对列表和字典 排序
- 字典使用 + 列表使用
- 字典NSDictionary 使用注意
- 关于数据字典的使用
- python列表和字典的方法总结
- Python 列表和字典的一些方法
- 对字典和列表的遍历操作
- Python列表和字典的方法总结
- python列表和字典的方法总结
- python中字典和列表的区别
- 列表和字典的一些方法
- Python列表和字典的学习
- MJExtention 字典转模型详解使用注意以及利用runtime字典转模型的使用注意
- struct file
- 496. Next Greater Element I
- 第一行代码第二版(郭霖著)笔记之第五章(详解广播机制)
- Tomcat创建虚拟目录和程序热部署
- Mac显示/隐藏文件
- 关于列表和字典的使用注意
- webpack入坑指南
- Hacking: The Art of Exploitation 读书笔记(一)代码调试技巧
- 学习笔记——Spring 中Bean属性的注入
- 修改Android手机内核,绕过反调试
- J2SE之java语法
- 分布式如何实现session共享
- Mac 10.12 编译 Android 源码
- Android空格符对比