Ton*_*ony 23 python list definition sequence slice
这些内置的Python数据类型有什么区别:列表,序列和切片?在我看来,这三者基本上代表了C++和Java调用数组.
Joc*_*zel 46
你在问题中混合了很多不同的东西,所以我只回答一个不同的问题;-P
您现在正在询问Python中最重要的界面之一:iterable
- 它基本上是您可以使用的任何东西for elem in iterable
.
iterable
有三个子孙sequence
,generator
和mapping
.
一个顺序是随机访问迭代一个.您可以询问序列中的任何项目,而无需使用之前的项目.使用此属性,您可以构建slices
,一次为您提供多个元素.切片可以给你一个子序列:seq[from:until]
和每个第n项:seq[from:until:nth]
.list
,tuple
和str
所有有序列.
如果通过键而不是整数位置进行访问,则会有映射.dict
是基本的映射.
最基本的可迭代是生成器.它不支持随机访问,因此不支持切片.您必须按照给定的顺序使用所有项目.生成器通常只在迭代它们时才创建它们的项目.创建的常用方法generators
是生成器表达式.它们看起来与列表理解完全一样,例如圆括号除外(f(x) for x in y)
.调用使用该yield
关键字的函数也会返回生成器.
所有迭代的通用适配器是迭代器.iterators
与他们支持的最基本类型具有相同的界面,a generator
.它们是通过调用iter
iterable 显式创建的,并在各种循环结构中隐式使用.
bad*_*adp 11
list
不仅仅是普通的数组.您可以在不提供项目数量的情况下初始化它们.你可以append
/ push
他们,你可以remove
/ pop
/ del
他们的项目,你可以有不同类型的对象列表(例如,[1,'e', [3]]
),你可以有递归列表...你可以切片列表,这意味着只获得一个新的列表一些项目.slice
是一种用于"幕后"的对象类型,用于处理a[start:stop:step]
表单中的扩展切片help(slice)
."序列"不是一个对象,更像是一些非正式接口,有些对象就像list
工具一样.
列表是序列,但序列不一定是列表.序列是支持序列接口的任何类型("协议").这是通过duck-typing而不是通过严格的继承层次结构来完成的.请注意,序列是容器,但容器不一定是序列.(顺序是顺序的!)
见http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange
切片对象通常通过语法sugar(foo[2:5]
)隐式创建,并提供给容器类型特殊方法(例如__getitem__
),您可以覆盖它们.除非您创建自己的序列/容器,否则通常不必处理切片.
请参阅http://docs.python.org/reference/datamodel.html#specialnames
列表与阵列相当.我不确定,但我认为它在cPython中实现为一个动态扩展的数组.但是,界面使得它更像是一个C++ STL Vector,而不仅仅是一个普通的旧数组.
列表是序列类型,类似于数组
序列类型描述功能超集:
有六种序列类型:字符串,Unicode字符串,列表,元组,缓冲区和xrange对象。
阅读更多... http://docs.python.org/glossary.html