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.它们是通过调用iteriterable 显式创建的,并在各种循环结构中隐式使用.
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