python内置的数据结构

详解列表List

这里是列表对象方法的清单:

list.append(x)

  添加一个元素到列表的末尾。相当于a[len(a):] = [x]

list.extend(L)

  将给定列表L中的所有元素附加到原列表a的末尾。相当于a[len(a):] = L

list.insert(i, x)

  在给定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,所以 a.insert(0, x) 在列表的最前面插入,a.insert(len(a), x) 相当于a.append(x)

list.remove(x)

  删除列表中第一个值为 x 的元素。如果没有这样的元素将会报错。

list.pop([i])

  删除列表中给定位置的元素并返回它。如果未指定索引,a.pop() 删除并返回列表中的最后一个元素。(i 两边的方括号表示这个参数是可选的,而不是要你输入方括号。你会在 Python 参考库中经常看到这种表示法)。

list.clear()

  删除列表中所有的元素。相当于del a[:]

list.index(x)

  返回列表中第一个值为 x 的元素的索引。如果没有这样的元素将会报错。

list.count(x)

  返回列表中 x 出现的次数。

list.sort(cmp=None, key=None, reverse=False)

  原地排序列表中的元素。

list.reverse()

  原地反转列表中的元素。

list.copy()

  返回列表的一个浅拷贝,等同于a[:],注意是“浅拷贝”

将列表当作队列使用

  将列表当作队列使用,此时最先进入的元素第一个取出(FIFO,先进先出)。但是列表用作此目的效率不高,原因是在列表的末尾添加和弹出元素非常快,但是在列表的开头插入或弹出元素却很慢 (因为所有的其他元素必须向后移一位,顺序容器的通病)。

  如果要实现一个队列,可以使用 collections.deque,它设计的目的就是在两端都能够快速添加和弹出元素。例如:

 1 >>> from collections import deque
 2 >>> queue = deque(["Eric", "John", "Michael"])
 3 >>> queue.append("Terry")           # 加入一个试试
 4 >>> queue.append("Graham")          # 再加一个
 5 >>> queue.popleft()                 # 删除队头
 6 ‘Eric‘
 7 >>> queue.popleft()                 # 再删队头
 8 ‘John‘
 9 >>> queue                           # 看看剩多少个(剩下后3个)
10 deque([‘Michael‘, ‘Terry‘, ‘Graham‘])

列表解析

  列表解析提供了一个生成列表的简洁方法。应用程序通常会从一个序列的每个元素的操作结果生成新的列表,或者生成满足特定条件的元素的子序列。

  例如,假设我们想要创建一个列表 s:

1 s=[]
2 for x in range(10):
3     s.append(x**2)
4 print(x)
5 print(s)
6 ---下面是打印---
7 9
8 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

  注意这个for循环中的被创建(或被重写)的名为x的变量在循环完毕后依然存在。使用如下方法,我们可以计算s的值而不会产生任何的副作用:

s = list(map(lambda x: x**2, range(10)))

  或者:

s = [x**2 for x in range(10)]

  列表解析由括号[]括起来,括号里面包含一个表达式,表达式后面跟着一个for语句,后面还可以接零个或更多的  for 或 if 语句。结果是一个新的列表,由表达式依据其后面的 for 和 if 字句上下文计算而来的结果构成。例如,下面的 listcomp 组合两个列表中不相等的元素:

1 >>> [(x, y)   for x in [1,2,3] for y in [3,1,4]    if x != y]
2 [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

  这与如下代码是等效的:

1 >>> combs = []
2 >>> for x in [1,2,3]:
3 ...     for y in [3,1,4]:
4 ...         if x != y:
5 ...             combs.append((x, y))
6 ...
7 >>> combs
8 [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

  有个更高级的应用,考虑下面由三个长度为 4 的列表组成的 3x4 矩阵:

1 >>> matrix = [
2 ...     [1, 2, 3, 4],
3 ...     [5, 6, 7, 8],
4 ...     [9, 10, 11, 12],
5 ... ]

  下面的列表解析可以将矩阵进行转置:

1 >>> [ [row[i]  for row in matrix]  for i in range(4)]
2 [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

  它是从最外层开始进行解析的,即上面代码的功能等同于如下代码:

1 >>> transposed = []
2 >>> for i in range(4):
3 ...     transposed.append([row[i] for row in matrix])
4 ...
5 >>> transposed
6 [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

  有个方法可以从列表中按索引来删除元素: del 语句。这不同于有返回值的 pop() 方法。del 语句还可以用于从列表中删除切片或清除整个列表 (我们是将空列表赋值给切片)。例如:

 1 >>> a = [-1, 1, 66.25, 333, 333, 1234.5]
 2 >>> del a[0]
 3 >>> a
 4 [1, 66.25, 333, 333, 1234.5]
 5 >>> del a[2:4]
 6 >>> a
 7 [1, 66.25, 1234.5]
 8 >>> del a[:]
 9 >>> a
10 []

  可以看到,del语句其实是直接对list对象进行操作的,而类似sorted等函数是直接返回一个对象拷贝的,所以并不会改变到原来的list。

时间: 2024-10-14 03:26:46

python内置的数据结构的相关文章

《Python运维开发之路》 内置函数&数据结构(六)

一.Python内置函数详解 Python内置函数图解    您也可以访问(里面有各种例子):https://docs.python.org/3/library/functions.html#next 以下分别举例子演示各种函数的使用  大后天更新,撸起袖子加油干!!! 一.Python常用数据结构 目录: 普通的列表结构 将列表当作堆栈使用 将列表当作队列使用 列表推导式 嵌套列表解析 del语句的使用 元组和序列 集合 字典 一些遍历技巧  大后天更新,撸起袖子加油干!!! 参考文献:htt

Python内置常量

引言 Python内置的常量不多,只有6个,分别是True.False.None.NotImplemented.Ellipsis.__debug__. 一. True 1. True是bool类型用来表示真值的常量. >>> True True >>> type(True) <class 'bool'> 2. 对常量True进行任何赋值操作都会抛出语法错误. >>> True = 1 SyntaxError: can't assign to

Python内置函数_数学运算类

本文和大家分享的主要是python内置函数数据运算类相关内容,一起来看看吧,希望对大家学习python 有所帮助. abs abs(x) 求绝对值 · X可以是整型,也可以是复数 · 若X是复数,则返回复数的模 >>> abs(-1)1>>> abs(-3+4j)5.0>>> bin bin(x) 将整数x转换为二进制字符串 >>> bin(2)'0b10'>>> bin(3)'0b11' bool bool([x]

Python内置函数进制转换的用法

使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns a

Python内置的字符串处理函数整理

Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 函数的使用方法 str='python String function' 生成字符串变量str='python String function' 字符串长度获取:len(str)例:print '%s length=%d' % (str,len(str)) 字母处理全部大写:str.upper()全

Python补充03 Python内置函数清单

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明. Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数: 基本数据类型 type() 反过头来看看 dir() help() len() 词典 len() 文本文件的输入输出 op

Python内置函数(42)——memoryview

英文文档: class memoryview(obj) memoryview objects allow Python code to access the internal data of an object that supports the buffer protocol without copying. Create a memoryview that references obj. obj must support the buffer protocol. Built-in objec

Python补充--Python内置函数清单

Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数:基本数据类型 type()反过头来看看 dir()   help()    len()词典 len()文本文件的输入输出 open()循环设计 range()   enumerate()    zip()循环对象

python基础9 -----python内置函数2

一.python内置所以函数     Built-in Functions     abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() eval() isinstance() pow() sum() basestring() execfile() issubclass() print() super() bin() file() iter() property() tuple