设为首页 加入收藏

TOP

列表、字典、元组进阶(一)
2017-09-30 17:06:57 】 浏览:7029
Tags:列表 字典 元组 进阶

  列表、字典和元组是python中所有脚本的主要工作组件。

列表

  列表中可包含任意种类的对象。和字符串一样,他也支持序列的常规操作,指定偏移值和切片、合并以及迭代等序列操作。

  与其他语言不同的是列表是一种高阶的序列操作工具,python中的列表可以完成大多数几何体数据结构的工作。

  列表的主要属性:

  1.任意对象的有序集合:列表中收集任何python对象并且保持了从左往右的位置顺序;

  2.通过偏移量读取;

  3.可变长度、异构和任意长度:列表是可变数据类型,支持原处修改,其中元素可以是任意数据类型,包括列表字典。

  4.对象引用:python总是会存储对象的引用而不是对象的copy。

  :我们在学习时注重精通常量语法,但是现实生产中python的多数据结构都是建立在运行执行程序代码时。

  列表的常规操作:

a=[1,2,'a']
b=['a','s','d']
print(a+b)
print(a*2)
运行结果:
[1, 2, 'a', 'a', 's', 'd']
[1, 2, 'a', 1, 2, 'a']

  列表的迭代与解析:

for i in a:
    print(i**2)
运行结果:
1
4
9
a=[1,2,3]
print(i**2 for i in a)
print(list(i**2 for i in a))
运行结果:
<generator object <genexpr> at 0x00000000027EBB40>
[1, 4, 9]
a=[-1,2,3]
print(list(map(abs, a)))
运行结果:
[1, 2, 3]

  由于列表多次嵌套,所以有时需要多次索引才能深入到数据结构中。

a=[[1,2,3],
   [4,5,6],
   [7,8,9]]
print(a[2][1])
运行结果:
8

  切片赋值时被赋值序列长度可以与我们复制的序列长度不相同,故可以用此操作进行替换,插入,缩短主列表。并且赋值的值与切片重合也是切实可行的。例:a[2:5]=a[3:7]。

  列表的常用方法:

  append():与a+[x]不同的是,方法原地修改列表,而+会产生新的列表。所以append方法执行更快。

a=[1,2,3]
a.append(4)
print(a)
运行结果:
[1, 2, 3, 4]

  sort():可以给定配置选项,name=value来定义。

a=['aBC','abd','Abe']
a.sort()
print(a)
a.sort(key=str.upper,reverse=True)
print(a)
运行结果:
['Abe', 'aBC', 'abd']
['Abe', 'abd', 'aBC']

  :在python2中比较时int总比str小,比较运算并不会自动转换类型,到了python3以后类型之间有了明确的界限,[1,2,'a']这用列表已经不可以用sort方法排序了。

a=['aBC','abd','Abe']
print(sorted(a))
运行结果:
['Abe', 'aBC', 'abd']

  其他常用方法:

a=['aBC','abd','Abe']
a.extend(['a'])
print(a)
运行结果:
['aBC', 'abd', 'Abe', 'a']
a=['aBC','abd','Abe']
a.pop()
print(a)
运行结果:
['aBC', 'abd']
a=['aBC','abd','Abe']
a.reverse()
print(a)
print(list(reversed(a)))
运行结果:
['Abe', 'abd', 'aBC']
['aBC', 'abd', 'Abe']
a=['aBC','abd','Abe']
a.insert(0,'a')
print(a)
print(a.index('a'))
a.remove('a')
print(a)
print(a.pop(1))
运行结果:
['a', 'aBC', 'abd', 'Abe']
0
['aBC', 'abd', 'Abe']
abd

  注:a[i:j]=[]可以做到删除,但是a[i]=[]只会将此索引位置改为空列表。

字典:

  字典是一种无序的集合,是靠key来取值的序列。字典可以非常快速的进行一些其他语言的搜索算法和数据结构。

  字典的主要属性:

  1.通过key而不是偏移量取值:字典有自己的hash表,通过键来取值。

  2.任意对象无需集合:字典并没有特定的顺序,实际上key提供了象征性的位置作用。

  3.与列表一样字典可变长、异构、任意嵌套。

  4.属于可变映射类型。

  5.对象引用表:采用最优化的散列算法来寻找key,搜索速度极快,并且与列表一样存储对象是引用而不是拷贝。

  字典的常用操作:

a={'name':'jeff','age':'111'}
print(list(a.keys()))
运行结果:
['name', 'age']
a={'name':'jeff','age':'111'}
print('name' in a)
运行结果:
Ture
a={'name':'jeff','age':'111'}
a['name']='frank'
print(a)
运行结果:
{'name': 'frank', 'age': '111'}
a={'name':'jeff','age':'111'}
a['like']='game'
print(a)
运行结果:
{'name': 'jeff', 'like': 'game', 'age': '111'}
a={'name':'jeff','age':'111'}
a['like']='game'
del a['like']
print(a)
运行结果:
{'age': '111', 'name': 'jeff'}

  字典常用方法:

a={'name':'jeff','age':'111'}
print(list(a.values()))
print(list(a.items()))
运行结果:
['jeff', '111']
[('name', 'jeff'), ('age', '111')]

  get():检查key是否在,并返回某个值,默认None。

a={'name':'jeff','age':'111'}
print(a.get('name','no'))
print(a.get('like','no'))
运行结果:
jeff
no

  update():更新没有的,并且盲目覆盖已有的值。

a={'name':'jeff','age':'111'}
a.update({'like':'game'})
print(a)
运行结果:
{'name': 'jeff', 'like': 'game', 'age': '111'}

  pop():

a={'name':'jeff','age':'111'}
a.pop('age')
print(a)
运行结果:
{'name': 'jeff'}

  :字典的键不一定都是字符串,当然不可能是列表啦,字典的键可以是任何不可变对象。

  小技巧:制作一个字典让他用起来很像一个列表。

a={0:'jeff
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇flask_restful 学习笔记 下一篇Python开发【笔记】:concurrent...

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目