Python 1.2 列表和字典基础
一. List创建、索引、遍历和内置增删函数
1.列表是Python的内置可变对象,由Array实现,支持任意类型的添加、组合和嵌套。
L = [] # list declare
L = [1, 1.024, 'dsp']
# List对象的引用的修改会造成原List的改变,需要copy()或者创建一个新的list对象(L[:])
title = L.copy() # shollow copy
title = M[:]
#索引 FROM 0 to len(L)-1,类似C语言数组。并支持反向索引 ->L[:-1] L[i:j]
print(L[::-1])
print( len(L), L[0:1], L[0:-1], L[0:] )
2. 列表的插入增添元素操作: append() insert() 数组移动导致开销过大,O(n)复杂度) extend(), 原地修改,不返回值
# Add element: 1.append 2.insert 3.extend
L.append('AI') # append object to end
L.append('CS') ex = ['python','C++','html']
L.extend(ex) # extend iterable object, L.extend("1")
L += ['php', 'go', 'java', 'javascript'] # 被解释器优化为extend()操作 L.insert(-1,'ML') # L.insert(index, object) -- insert object before index
L.insert(0,"football")
L.insert(len(l)-1,'real')
3. 查找和删除操作: L.index() L.count() pop(index) remove()
# search and find pos
L.index('python') # return first index of value
L.count('python') # return number of occurrences of value计数 # Delete elemnt: 1.pop 2.remove 3.del 4.clear # L.pop([index]) -> item: remove and return item at index (default last)
L.pop()
print(L.pop(0)) L_new = L.remove('dsp') # remove first occurrence of value移除第一个
print(L_new) del L[0:2]
L_new.clear() # L.clear() -> None -- remove all items
L print(L_new)
4.排序: 列表解析和 sort、reverse 方法
L = [x for x in ('a', 'b', 'c', 'd', 'e')]
alpha = list( map(ord , L) )
for i, a in zip(L, alpha):
print( i, "ord", a)
# 原处修改 L.sort() L.reverse()--> no return
# L.sort(key=None, reverse=False) -> None -- stable sort IN PLACE
L_new.sort() print("sort in palce", L_new)
L_new.sort(reverse=True)
print("reverse sort in place", L_new) print( sorted(L_new) )
# 返回一个新的对象
L_new.reverse()
# L.reverse() -- reverse *IN PLACE*
print(L_new) M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# get column 2
col2 = [row[1] for row in M] title = L
二 . Dict创建、修改和内置增删函数
1.字典类型由哈希表实现,具有快速查找的特点。字典的key值必须是不可变元素如字符、数字和元组对象,Python中可动态的增加字典元素。
字典创建的几种方法:
#[1] 声明创建 dict
D0 = {"id":1, 'info': {'name':'David', 'age':20, 'sex':'M'}} #[2] 空字典不断添加键值
D1 = {}
D1['id'] = 2 # 通过键获取value
D1['info'] = {'name':'Mick', 'age':17, 'sex':'F'} D1['id'] = 5 # 复制修改value
print( D0.get("id", 0) ) # D.get(key, defautl)方式取值,避免无键异常
if 'info' in D3:
print('exist ', D3['info']) #[3] 元组键值对赋值创建
D2 = dict( [('id', 3), ('info', {'name':'Lucy', 'age':16, 'sex':'F'}) ]) #[4] 键必须是string, 形如 key=value pairs的参数
D3 = dict( age = 4, text = {'name':'David', 'socre':666 } ) #[5] values equal
D4 = dict.fromkeys(['a', 'b'], 0) # 创建字典:键不同,值相同 #[6] 字典生成式
alpha = { chr( i+ord('a') ):i+ord('a') for i in range(26) }
或者通过两个Values和Keys列表输入内置zip函数,得到形如(key,value)的zip对象。
keys = [ 'a', 'b', 'c' ]
values = [ 5, 6, 7 ]
D = {}
for key, value in zip( keys, values):
D[key] = value
# 直接通过zip键值对赋值
D = dict( zip( keys, values) )
2. 其他增删函数 update() | pop(key)
# 内置方法获取键keys()、值values()
print( list( D0.keys() ) )
print( list( D0.values() ))
print( list( D0.items() ))
D1.update(D0)
print( D2.pop('info') )
3. 字典解析、遍历
D = dict( k:0 for k in ['a', 'b'] ) # zip-->together keys and values, it returns a key-vlaue pairs
print( zip( ['a', 'b', 'c'], [1, 2, 3] ) )
D = dict( zip(['a', 'b', 'c'], [1, 2, 3]) )
D = { k:v for k, v in zip(['a', 'b', 'c'], [1, 2, 3]) }
alpha = { i: chr( ord('a')+i-1 ) for i in range(1,27) }
# 迭代
ks = D.keys() # 为可迭代对象Iterable
ks.sort()
for k in ks:
print(k, '->', D[k])
for k in sorted( D.keys() ):
print(k, D[k]) # dictionary key exchange with value
def changedict(dic):
mydict = {}
for key in dic:
mydict.update({}.fromkeys(dic[key],key))
return mydict
# 键值交换
def revert_dict( d ):
new_dict = { }
for key in d.keys():
new_dict[ d[key] ] = key
return new_dict
print( revert_dict(alpha) )
# 参考《python 学习手册》
# 转载请注明来源: https://www.cnblogs.com/justLittleStar/p/10417760.html
Python 1.2 列表和字典基础的更多相关文章
- python字符串、列表和字典的说明
python字符串.列表和字典的说明 字符串.列表.字典 字符串的作用存储一段数据信息.例如 info = '我爱北京天安门' ,在调取的时候可以直接调取,灵活方便,print(info) 就可以把刚 ...
- [转载]Python 元组、列表、字典、文件
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...
- python学习之列表和字典
列表 基本操作>>>len([1,3,4])3 >>>[1,2,3]+[4,5,6] +号两边必须是相同类型[1,2,3,4,5,6] >>> ...
- python 1:列表和字典
初学Python, 对列表和字典的嵌套使用. phoneBook = [] #列表 list peopleInfo = {} #字典 dict i=0 while i<3: peopleInfo ...
- python中的列表和字典
列表和字典的区别: 列表是有序排列的一些物件,而字典是将一些物件(键)对应到另外一些物件(值)的数据结构; 应用场景: 字典 各种需要通过某个值去查看另一个值的场合,也就是一个虚拟的“查询表”,实现方 ...
- python开发技巧---列表、字典、集合值的过滤
主要学习列表,字典,集合表达式的应用: 列表的解析式: 生成一个随机列表: In [4]: datalist = [randint(-10,10) for _ in range(10)] In [5] ...
- Python之路-python数据类型(列表、字典、字符串、元祖)操作
一.列表: 列表的语法,以中括号开通和结尾,元素以逗号隔开.例如:name = [] 列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1. 1.增加 #name = ...
- Python 第二篇:python字符串、列表和字典的基本操作方法
本文基于python 3.5.1 python常见的数据类型有字串.列表.元组.字典等,本文将详细介绍每一种数据类型的操作方法. 一:str字串的操作方法: 1.capitalize()--> ...
- Python学习三|列表、字典、元组、集合的特点以及类的一些定义
此表借鉴于他人 定义 使用方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner', ...
随机推荐
- NSJSONSerialization能够处理的JSONData
NSJSONSerialization能够处理的JSONData You use the NSJSONSerialization class to convert JSON to Foundation ...
- Mysql学习---基础操作学习
1.1. 基本操作 数据库引擎 Inodb:支持事务[原子性操作,完成一些列操作后才算完成操作,否则rollback] MyISAM: 支持全文索引,强调了快速读取操作,主要用于高负载的select ...
- SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的
大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...
- excel 在web导入到数据库的操作方法
这个操作的大致步骤是把本地文件存入到服务器端,然后再读取服务端的文件并且使用NPOI这个第三方的插件去读取文件导入到数据库批量插入需要注意的是,前端需要使用form包裹type=file的文件标签,并 ...
- xml-apis-ext.jar
xml-apis-ext.jar,hightcharts导出图片是解决乱码需要用到的一个包
- Springmvc 进行数据类型转换
SpringMVC进行一些常用的数据类型转换,这里以Date 数据类型的转换为例. SpringMVC表单中输入日期,一般都是以字符串的形式输入,如何将字符形式的日期转换为Date 类型的呢?这里只需 ...
- 【[USACO12DEC]第一!First!】
一个串不能成为第一的情况有两种 另外一个单词是它的前缀 在分配字母表大小关系的时候出现了矛盾的情况 第一种很好判断,一旦我们在一个单词没有匹配完之前遇到一个结束标志,那么就说明另外一个单词是它的前缀 ...
- PHP语言开发微信公众平台(订阅号)之curl命令(补充)
在之前的一篇随笔中,博主在调用curl命令上传文件时会经常出现上传方法过时的情况.如下图所示: 所以,我们只需要把上传方法换成创建CURLFile 类即可.如下所示 $ch = curl_init() ...
- 20165214 2018-2019-2 《网络对抗技术》Exp6 信息搜集与漏洞扫描 Week9
<网络对抗技术>Exp6 信息搜集与漏洞扫描 Week9 一.实验目标与内容 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 使用搜索 ...
- webstorm&phpstorm打开大型项目卡死解决如vue-laravel-Yii2
用phpstorm开发时如果项目中文件过多会造成phpstorm变慢甚至卡死,尤其在node加入到我们的项目中更加会加重这种情况,因为node_modules目录中的模块非常多,phpstorm加载这 ...